gpt4 book ai didi

java - 模拟 - 零交互

转载 作者:行者123 更新时间:2023-12-02 05:39:00 25 4
gpt4 key购买 nike

我编写了一个测试来验证类中的公共(public)方法是否被调用。我的测试失败如下。谁能告诉我为什么会这样?

Wanted but not invoked: `mockMyClass.runThis();

Actually, there were zero interactions with this mock.

class MyClass{
public void myMethod(){
runThis("hello");
}
}

public void runThis(String str){
return;
}

测试类

@Mock
MyClass mockMyClass;

MyClass myClass = new MyClass();

@Test
public void test(){
myClass.myMethod();
verify(mockMyClass).runThis(anyString());
}

最佳答案

您不是在调用您的模拟,而是针对真实的类。您需要生成一个模拟,然后调用该模拟。尝试这样的事情:

MyClass mock = mock(MyClass.class);  // I'm using the methods rather than annotation here
mock.myMethod();

并断言这一点。不过,我不太确定上面的 runThis() 在哪里。如果它位于包含的类上,那么这就是需要模拟的东西。如果它在同一个类上,那么您本身就不能使用模拟,因为模拟替代了所有功能,并且也许 Mockito spy() 机制将是使用这里。 S ection 13 of the doc对此提出更多建议。

关于java - 模拟 - 零交互,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24672023/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com