2
我以为我已经理解了Spock交互,但是我必须要管理员,我仍然缺少一些图片。Grails服务的Spock测试中的交互太少
好的,在这里我的问题:我有一个Grails服务执行某些操作的方法,包括调用相同服务类的void方法。这里的代码:
class myService {
void myStuff(def myObj, params) {
// do my stuff
anotherMethod(myObj)
//do my stuff again
}
void anotherMethod(myObj) {
// do other stuff
}
}
我想确保myStuff方法调用另一个方法,以测试和记录正确的行为。
所以,这里是我的斯波克规范类测试:
void 'test myStuff method'() {
given: 'my object and some params'
// doesn't really matter what I'm doing here
MyObject myObj = new MyObject()
params = [title: 'my object']
when: 'we call myStuff()'
service.myStuff(myObj, params)
then: 'anotherMethod() is called exactly one times'
1 * service.anotherMethod(myObj)
}
}
我得到的错误是:
Too few invocations for:
1 * service.anotherMethod(myObj) (0 invocations)
你觉得呢?怎么了?
一如既往,在此先感谢。
感谢您的回答。我理解你的担忧,基本上我这样做是因为myStuff()方法基本上是具有特定参数的anotherMethod()调用的“别名”,并且我想用测试来记录此特定行为。我会尝试一下Spy(),以此为契机将我的Grails插件中的Spock插件更新到0.7版本。 – lucke84
部分模拟和间谍为我工作。 我所做的(双引号之间的“代码”)是在测试的给定部分添加一个Spy,就像这个“def myService = Spy(MyService)”,然后使用间谍myService而不是典型的服务'实例。 测试的其余部分非常简单:“when:myService.myStuff(myObj,params)then:1 * myService.anotherMethod(_)”。 – lucke84