我一直在使用Spock进行单元测试,这很棒,但我有一些创建Mockito模拟的遗留代码,任何使用此遗留代码的规范都必须回归到使用Mockito操作,例如何时和验证。
例如:
public class FooSpec extends Specification {
def "services invoked when something happens"() {
given: "legacy code that creates mock services that are Mockito mocks"
ServiceFactory serviceFactory = new MockitoServiceFactory()
and: "a foo instance"
def foo = new Foo()
and: "the foo instance is configured with a service that is a Mockito mock"
foo.service = serviceFactory.getService("foo")
when: "the foo instance sends an event"
foo.sendEvent()
then: "the foo service actually sends the event"
verify(foo.service, times(1)).sendEvent() || true
}
}
我更愿意以Spock的方式进行验证:
1 * foo.service.sendEvent()
这是一个过于简单的例子,但有没有办法包装Mockito模拟对象,使其行为像Spock模拟对象?我想过创建一个生成Spock模拟对象的 SpockServiceFactory ,但我记得Spock不允许在规范之外创建模拟(可能这已经改变了吗?)
答案 0 :(得分:0)
没有办法(不要求Spock代码库)使用Spock的模拟语法来验证Mockito模拟。
但我记得Spock不允许在规范之外创建模拟(可能这已经改变了吗?)
它还没有改变(基类是你目前最接近的)。