@RunWith(MockitoJUnitRunner.class)
public class MessageDataTest {
@InjectMocks
MessageData messageData;
@Test
public void testingMethod() throws Exception {
MessageData data = PowerMockito.spy(messageData); //passing the mocked object for spy
PowerMockito.when(data,"isMessageContains",anyString(),any()).thenReturn(true); // throwing exception here
MessageDataResponse response = messageFormatterData.constructData(messageItems);
assertNotNull(response);
}
}
MessageData.java
private boolean isMessageContains(String name, MessageResponse messageResponse) {
for (::) {
some logic
return true;
}
}
return false;
}
运行测试用例时,出现以下错误,
org.mockito.exceptions.misusing.InvalidUseOfMatchersException:在此处检测到放错位置的参数匹配器 您不能在验证或存根之外使用参数匹配器。正确使用参数匹配器的示例:when(mock.get(anyInt()))。thenReturn(null); doThrow(new RuntimeException())。when(mock).someVoidMethod(anyObject()); verify(mock).someMethod(contains(“ foo”)) 另外,可能会出现此错误,因为您将参数匹配器与无法模拟的方法一起使用。以下方法不能存根/验证:final / private / equals()/ hashCode()。不支持在非公共父类上声明的模拟方法
我想模拟这个私有的“ isMessageContains”以返回始终为真。