diff --git a/runtime/doc/testing.txt b/runtime/doc/testing.txt
index e29921a..82fe64e 100644
--- a/runtime/doc/testing.txt
+++ b/runtime/doc/testing.txt
@@ -44,6 +44,8 @@
 		let memory allocation fail {repeat} times.  When {repeat} is
 		smaller than one it fails one time.
 
+		Can also be used as a |method|: >
+			GetAllocId()->test_alloc_fail()
 
 test_autochdir()					*test_autochdir()*
 		Set a flag to enable the effect of 'autochdir' before Vim
@@ -55,6 +57,8 @@
 		were typed by the user. This uses a low level input buffer.
 		This function works only when with |+unix| or GUI is running.
 
+		Can also be used as a |method|: >
+			GetText()->test_feedinput()
 
 test_garbagecollect_now()			 *test_garbagecollect_now()*
 		Like garbagecollect(), but executed right away.  This must
@@ -73,6 +77,8 @@
 		{name} are supported:
 			need_fileinfo
 
+		Can also be used as a |method|: >
+			GetName()->test_getvalue()
 
 test_ignore_error({expr})			 *test_ignore_error()*
 		Ignore any error containing {expr}.  A normal message is given
@@ -84,6 +90,8 @@
 		When the {expr} is the string "RESET" then the list of ignored
 		errors is made empty.
 
+		Can also be used as a |method|: >
+			GetErrorText()->test_ignore_error()
 
 test_null_blob()					*test_null_blob()*
 		Return a |Blob| that is null. Only useful for testing.
@@ -124,6 +132,9 @@
 		even though the value is "double".
 		Only to be used for testing!
 
+		Can also be used as a |method|: >
+			GetOptionName()->test_option_not_set()
+
 
 test_override({name}, {val})				*test_override()*
 		Overrides certain parts of Vim's internal processing to be able
@@ -155,12 +166,17 @@
 <		The value of "starting" is saved.  It is restored by: >
 			call test_override('starting', 0)
 
+<		Can also be used as a |method|: >
+			GetOverrideVal()-> test_override('starting')
 
 test_refcount({expr})					*test_refcount()*
 		Return the reference count of {expr}.  When {expr} is of a
 		type that does not have a reference count, returns -1.  Only
 		to be used for testing.
 
+		Can also be used as a |method|: >
+			GetVarname()->test_refcount()
+
 
 test_scrollbar({which}, {value}, {dragging})		*test_scrollbar()*
 		Pretend using scrollbar {which} to move it to position
@@ -179,6 +195,8 @@
 		Only works when the {which} scrollbar actually exists,
 		obviously only when using the GUI.
 
+		Can also be used as a |method|: >
+			GetValue()->test_scrollbar('right', 0)
 
 test_setmouse({row}, {col})				*test_setmouse()*
 		Set the mouse position to be used for the next mouse action.
@@ -197,6 +215,9 @@
 		{expr} must evaluate to a number.  When the value is zero the
 		normal behavior is restored.
 
+		Can also be used as a |method|: >
+			GetTime()->test_settime()
+
 ==============================================================================
 3. Assert functions				*assert-functions-details*
 
