diff --git a/src/testing.c b/src/testing.c
index c053487..3340123 100644
--- a/src/testing.c
+++ b/src/testing.c
@@ -1285,10 +1285,10 @@
     list_T	*l;
     listitem_T	*li;
 
-    if (dict_find(args, (char_u *)"files", -1) == NULL
-	    || dict_find(args, (char_u *)"row", -1) == NULL
-	    || dict_find(args, (char_u *)"col", -1) == NULL
-	    || dict_find(args, (char_u *)"modifiers", -1) == NULL)
+    if (!dict_has_key(args, "files")
+	    || !dict_has_key(args, "row")
+	    || !dict_has_key(args, "col")
+	    || !dict_has_key(args, "modifiers"))
 	return FALSE;
 
     (void)dict_get_tv(args, (char_u *)"files", &t);
@@ -1341,10 +1341,10 @@
     int		forward;
     int		retval;
 
-    if (dict_find(args, (char_u *)"find_text", -1) == NULL
-	    || dict_find(args, (char_u *)"repl_text", -1) == NULL
-	    || dict_find(args, (char_u *)"flags", -1) == NULL
-	    || dict_find(args, (char_u *)"forward", -1) == NULL)
+    if (!dict_has_key(args, "find_text")
+	    || !dict_has_key(args, "repl_text")
+	    || !dict_has_key(args, "flags")
+	    || !dict_has_key(args, "forward"))
 	return FALSE;
 
     find_text = dict_get_string(args, (char_u *)"find_text", TRUE);
@@ -1370,16 +1370,16 @@
     int_u	mods;
     int		move;
 
-    if (dict_find(args, (char_u *)"row", -1) == NULL
-	    || dict_find(args, (char_u *)"col", -1) == NULL)
+    if (!dict_has_key(args, "row")
+	    || !dict_has_key(args, "col"))
 	return FALSE;
 
     // Note: "move" is optional, requires fewer arguments
     move = (int)dict_get_bool(args, (char_u *)"move", FALSE);
 
-    if (!move && (dict_find(args, (char_u *)"button", -1) == NULL
-	    || dict_find(args, (char_u *)"multiclick", -1) == NULL
-	    || dict_find(args, (char_u *)"modifiers", -1) == NULL))
+    if (!move && (!dict_has_key(args, "button")
+	    || !dict_has_key(args, "multiclick")
+	    || !dict_has_key(args, "modifiers")))
 	return FALSE;
 
     row = (int)dict_get_number(args, (char_u *)"row");
@@ -1408,9 +1408,9 @@
     int		dragging;
     scrollbar_T *sb = NULL;
 
-    if (dict_find(args, (char_u *)"which", -1) == NULL
-	    || dict_find(args, (char_u *)"value", -1) == NULL
-	    || dict_find(args, (char_u *)"dragging", -1) == NULL)
+    if (!dict_has_key(args, "which")
+	    || !dict_has_key(args, "value")
+	    || !dict_has_key(args, "dragging"))
 	return FALSE;
 
     which = dict_get_string(args, (char_u *)"which", FALSE);
@@ -1443,7 +1443,7 @@
 #  ifdef FEAT_GUI_TABLINE
     int		tabnr;
 
-    if (dict_find(args, (char_u *)"tabnr", -1) == NULL)
+    if (!dict_has_key(args, "tabnr"))
 	return FALSE;
 
     tabnr = (int)dict_get_number(args, (char_u *)"tabnr");
@@ -1461,8 +1461,8 @@
     int	tabnr;
     int	item;
 
-    if (dict_find(args, (char_u *)"tabnr", -1) == NULL
-	    || dict_find(args, (char_u *)"item", -1) == NULL)
+    if (!dict_has_key(args, "tabnr")
+	    || !dict_has_key(args, "item"))
 	return FALSE;
 
     tabnr = (int)dict_get_number(args, (char_u *)"tabnr");
