Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Mockito错误地注入字符串值_Java_Unit Testing_Testing_Mocking_Mockito - Fatal编程技术网

Java Mockito错误地注入字符串值

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

我在我的测试类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;
@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在此类中被重写?