当前位置: 首页 > 知识库问答 >
问题:

异常:需要但未调用mockito,实际上与此mock没有任何交互

丌官积厚
2023-03-14

我有接口

Interface MyInterface {
  myMethodToBeVerified (String, String);
}

接口的实现是

class MyClassToBeTested implements MyInterface {
   myMethodToBeVerified(String, String) {
    …….
   }
}

我还有一节课

class MyClass {
    MyInterface myObj = new MyClassToBeTested();
    public void abc(){
         myObj.myMethodToBeVerified (new String(“a”), new String(“b”));
    }
}

我正在尝试为MyClass编写JUnit。我已经做了

class MyClassTest {
    MyClass myClass = new MyClass();
  
    @Mock
    MyInterface myInterface;

    testAbc(){
         myClass.abc();
         verify(myInterface).myMethodToBeVerified(new String(“a”), new String(“b”));
    }
}

但我需要mockito但没有调用,实际上在验证调用时与这个mock没有任何交互。

谁能提出一些解决方案。

共有1个答案

沈鸿光
2023-03-14

您需要在所测试的类中注入mock。现在你是在和真实的对象交互,而不是和模拟对象交互。您可以通过以下方式修复代码:

void testAbc(){
     myClass.myObj = myInteface;
     myClass.abc();
     verify(myInterface).myMethodToBeVerified(new String("a"), new String("b"));
}

虽然将所有初始化代码提取到@before中会是更明智的选择

@Before
void setUp(){
     myClass = new myClass();
     myClass.myObj = myInteface;
}

@Test
void testAbc(){
     myClass.abc();
     verify(myInterface).myMethodToBeVerified(new String("a"), new String("b"));
}
 类似资料: