mockito 我可以用mocki来验证我是否有一个方法要测试,什么调用了同一个类中的另一个方法,什么调用了另一个类的方法?

t9aqgxwy  于 11个月前  发布在  其他
关注(0)|答案(1)|浏览(177)

所以我在类TestingThis中有一个方法(foo()

public class TestingThis {
    // injected another class
    private HelperClass helperClass;

    public void foo() {
        bar();
    }

    public void bar() {
        helperClass.call();
    }
}

字符串
测试:

@Mock
private HelperClass helperClass;

@InjectMocks
private TestingClass testingClass;

@Test
public void fooTest() {
   testingClass.foo();

   // can I have something like this?
   verify(helperClass).call();
   verifyNoMoreInteractions(helperClass);
}


我可以/应该验证mock是否在链中的某个地方被调用吗?
目前,它说“通缉,但没有援引”,什么感觉不对.

vulvrdjw

vulvrdjw1#

“我可以/应该验证是否在链中的某个地方调用了mock吗?“我不这么认为。至少不是以你的方式。因为你是在单元测试foo()方法,你只想测试这个方法的逻辑,你不关心bar()里面是什么,你会模仿bar()并让它返回(如果它不是空的)你想要的/需要的任何东西。所以,你不需要检查bar()里面是什么以及它的行为。

@Mock
private HelperClass helperClass;

@InjectMocks
private TestingClass testingClass;

@Test
public void fooTest() {
   testingClass.foo();

   // wont return anything in case the method is void ofc
   when(helperClass.bar().thenReturn(something);

   // you could verify that the mocked method got called if you need to
   verify(helperClass).bar();
}

字符串
如果你想发布你的真实的代码,也许我可以用一种更好的方式来帮助你,因为一个“抽象”的例子可能不是最好的解释方式。

相关问题