我有一个方法负责将一个标志更改为禁用传递的对象。目的是测试该方法是否改变了该标志。我正在使用spock框架。方法在接口上调用,由JPA模块实现。我找不到任何方法来模拟这个方法
Interface MyService {
public void update();
}
interface MyRepositoryService {
//implemented by JPA module
public void update(MyObject myObject);
}
class MyObject {
//..
private boolean disable;
//..
}
规范下的模块:
class MyServiceImplementation implements MyService {
private MyRepositoryService myRepositoryService;
//method to be mocked
void update(MyObject myObject){
//...
myRepository.update(myObject)
//...
}
}
答案 0 :(得分:0)
不确定我是否会失去什么,但只是宣布一个模拟 - 如果您要测试对象之间的互动 - 或者存根如果您要测试方法行为。
实例测试对象调用构造函数手动传递模拟对象并编写测试代码。
使用Groovy语法快速举例:
class MyServiceImplementationUnitTest extends Specification {
def Repository repository = Mock(Repository)
@Subject MyService service = new MyService(
...
repository // the mock
)
// an example guidelines for a possible test
def "this is a test"() {
given: "an input object"
def inputObject = SMTH
when: "we call update method with that object"
service.update(inputObject)
then: "repository's update method is called once with expected parameter"
1 * repository.update(inputObject)
}
}