相关疑难解决方法(0)

使用Mockito验证方法后没有调用任何内容

我正在使用Mockito在Java中编写单元测试,我想验证某个方法是最后一个调用对象的方法.

我正在测试的代码中做这样的事情:

row.setSomething(value);
row.setSomethingElse(anotherValue);
row.editABunchMoreStuff();
row.saveToDatabase();
Run Code Online (Sandbox Code Playgroud)

在我的模拟中,我并不关心我在行上编辑所有内容的顺序,但是在我保存它之后我不再尝试对它做任何事情是非常重要的.有没有办法做到这一点?

请注意,我不是在寻找verifyNoMoreInteractions:它不会确认saveToDatabase是最后调用的东西,如果我在没有显式验证的行上调用任何内容,它也会失败.我希望能够说出类似的话:

verify(row).setSomething(value);
verify(row).setSomethingElse(anotherValue);
verifyTheLastThingCalledOn(row).saveToDatabase();
Run Code Online (Sandbox Code Playgroud)

如果它有帮助,我将从JMock测试中切换到Mockito:

row.expects(once()).method("saveToDatabase").id("save");
row.expects(never()).method(ANYTHING).after("save");
Run Code Online (Sandbox Code Playgroud)

java unit-testing mocking mockito

47
推荐指数
2
解决办法
4万
查看次数

Mockito验证只调用了一个预期的方法

我正在一个项目中工作,有一个Service类和一个Client充当外观的东西(不知道它是否是设计模式世界中的正确术语,但我会尽力使自己清楚).Service方法可能非常昂贵,因为它们可能与一个或多个数据库进行通信,长检查等等,因此每个Client方法都应该调用一个且只能调用一个Service方法.

Service 类结构是这样的

public class Service {
    public void serviceA(){...}
    public SomeObject serviceB(){...}
    // can grow in the future
}
Run Code Online (Sandbox Code Playgroud)

而且Client应该是这样的

public class Client {
    private Service myService; // Injected somehow
    public void callServiceA() {
        // some preparation
        myService.serviceA();
        // something else
    }

    public boolean callServiceB(){...}
}
Run Code Online (Sandbox Code Playgroud)

在测试课中,Client我希望有类似的东西

public class ClientTest{
    private Client client; // Injected or instantiated in @Before method
    private Service serviceMock …
Run Code Online (Sandbox Code Playgroud)

java mockito

12
推荐指数
1
解决办法
9136
查看次数

Mockito验证没有更多的交互,但省略了getter

Mockito api提供的方法:

Mockito.verifyNoMoreInteractions(someMock);
Run Code Online (Sandbox Code Playgroud)

但是在Mockito中是否有可能声明我不希望与给定模拟器进行更多交互,除了与其getter方法的交互之外?

简单的场景是我测试SUT只更改给定模拟的某些属性并使其他属性未被打开的情况.

在示例中,我想测试UserActivationService在类User的实例上更改属性Active但不对Role,Password,AccountBalance等属性执行任何操作.

unit-testing mocking mockito

8
推荐指数
1
解决办法
1万
查看次数

标签 统计

mockito ×3

java ×2

mocking ×2

unit-testing ×2