PowerMockito 如何捕获传递给模拟对象的参数?
PowerMockito how to capture a parameter passed to a mock object?
我正在尝试使用 PowerMockito 捕获传入模拟对象的参数,这是代码:
//I create a mock object
ClassMocked mock = PowerMockito.mock(ClassMocked.class);
//Create the captor that will capture the String passed in input to the mock object
ArgumentCaptor<String> argumentCaptor = ArgumentCaptor.forClass(String.class);
//When the method put is executed on my mock I want the second parameter (that is a String) to be captured
Mockito.verify(mock).put(anyString(), inputDataMapCaptor.capture());
//Creates the instance of the class that I want to test passing the mock as parameter
ClassToTest instance = new ClassToTest(mock);
//Executes the method that I want to test
instance.methodToTest();
/* I know that during the execution of "methodToTest()" mock.put(String,String) will be executed and I want to get the second string parameter. */
当我执行测试时,我在执行 Mockito.verify(mock).put(...) 行时出现异常;
"Wanted but not invoked mock.put(any,Capturing argument);"
怎么了?
你应该在 Mockito.verify(mock).put(anyString(), inputDataMapCaptor.capture());
之前调用 instance.methodToTest();
verify()
验证指定的方法调用确实发生了。
您无法验证"upfront"方法调用是否应该发生。
因此:verify()
需要发生在事实之后,而不是之前!
我正在尝试使用 PowerMockito 捕获传入模拟对象的参数,这是代码:
//I create a mock object
ClassMocked mock = PowerMockito.mock(ClassMocked.class);
//Create the captor that will capture the String passed in input to the mock object
ArgumentCaptor<String> argumentCaptor = ArgumentCaptor.forClass(String.class);
//When the method put is executed on my mock I want the second parameter (that is a String) to be captured
Mockito.verify(mock).put(anyString(), inputDataMapCaptor.capture());
//Creates the instance of the class that I want to test passing the mock as parameter
ClassToTest instance = new ClassToTest(mock);
//Executes the method that I want to test
instance.methodToTest();
/* I know that during the execution of "methodToTest()" mock.put(String,String) will be executed and I want to get the second string parameter. */
当我执行测试时,我在执行 Mockito.verify(mock).put(...) 行时出现异常;
"Wanted but not invoked mock.put(any,Capturing argument);"
怎么了?
你应该在 Mockito.verify(mock).put(anyString(), inputDataMapCaptor.capture());
instance.methodToTest();
verify()
验证指定的方法调用确实发生了。
您无法验证"upfront"方法调用是否应该发生。
因此:verify()
需要发生在事实之后,而不是之前!