Java Mockito错误地注入字符串值
我在我的测试类testObj中创建了一个对象,mockDao是我模拟的一个dao对象 要测试的函数类似于:Java Mockito错误地注入字符串值,java,unit-testing,testing,mocking,mockito,Java,Unit Testing,Testing,Mocking,Mockito,我在我的测试类testObj中创建了一个对象,mockDao是我模拟的一个dao对象 要测试的函数类似于: MyDao myDao; String myFunc(String param1, String param2) { MyObj realObj = new MyObj("param1", "param2"); return myDao.someFunction(realObj); } UnitTest类类似于: @Mock MyDao mockDao; @Inject
MyDao myDao;
String myFunc(String param1, String param2) {
MyObj realObj = new MyObj("param1", "param2");
return myDao.someFunction(realObj);
}
UnitTest类类似于:
@Mock
MyDao mockDao;
@InjectMock
MyComponent component;
MyObj testObj = new MyObj("param1", "param2");
@Test
public void test() {
Mockito.when(mockDao.someFunction(testObj)).thenReturn(“123”);
String returnedValue = component.myFunc("param1","param2");
Assert.assertEquals(returnedValue, "123");
}
这不应该在我的实际类中注入“123”,因为在实际类(realObj)中创建的对象不同于testObj
然而,这是注射“123”,我的测试通过了。理想情况下,它应该失败
这种注入是如何发生的?在模拟设置中没有使用任何参数匹配器,在这种情况下,Mockito应该使用默认的参数匹配器:any(),它不检查如何调用方法(在每种情况下都返回true) 尝试:
Mockito.when(mockDao.someFunction(Mockito.eq(testObj))。然后返回(“123”)
。在本例中,Mockito将使用对象的equals方法,在本例中是对象引用
我建议您,如果您需要“任何内容都不匹配以下内容”之类的内容,请尝试查看Mockito的其他匹配程序显示此类
MyObj
equals和hashcode在此类中被重写?