我有一个服务类,它有 2 个方法(一个是公共(public)的,另一个是 protected )。我正在尝试对我的代码进行单元测试。下面是代码片段 MyServiceClass.groovy
class MyServiceClass {
public boolean myMethod1() {
// some code
boolean success = myMethod2()
// some code
}
public boolean myMethod2() {
// some logic to return true/false
return true
}
}
MyServiceClassTests.groovy
class MyServiceClassTests {
void testMyMethod1() {
// unit test code
}
}
在上面的单元测试代码中,我想模拟 myMethod1() 调用的 myMethod2() 返回结果,即这两个方法都在单元测试下的同一个服务类中。如何 mock 它并完成任务?
最佳答案
你当然不能模拟被测试的类,否则你只是在测试一个模拟。
将 myMethod2()
移至另一个类中可能会更好。想想MyServiceClass
是否是trying to do too much .
编辑
您要求的答案不需要移动 myMethod2()
选项 1
创建一个新的子类作为被测试的类,而不是 MyServiceClass。您的新类应扩展 MyServiceClass,然后您可以覆盖 myMethod2()
并提供不同的“仅测试”实现。
选项 2
可以使用Mockito to Spy the class under test ,但这是一种非正统的方法。
如果您有控制权,我仍然建议重构代码
关于unit-testing - 模拟正在单元测试的服务类中的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25997689/