0
使用的Grails 3.2.8和用於測試的斯波克框架,給出下面的控制器類:如何測試是否一個實例方法是從另一個實例方法中調用Grails中使用3斯波克
class SomeController {
def doSomething() {
// do a few things, then:
someOtherMethod()
}
protected void someOtherMethod() {
// do something here, but I don't care
}
}
我該如何測試doSomething()方法以確保someOtherMethod()
只被調用一次?
這是我的嘗試失敗:
@TestFor(SomeController)
class SomeControllerSpec extends Specification {
void "Test that someOtherMethod() is called once inside doSomething()"() {
when:
controller.doSomething()
then:
1 * controller.someOtherMethod(_)
}
}
錯誤消息:
Too few invocations for:
1 * controller.someOtherMethod(_) (0 invocations)
注:專注於手頭的問題進口量已經省略
你肯定someOtherMethod()應該是控制器的方法,而不是服務的方法?一般來說,我會說控制器內的受保護的方法可能是可疑的。如果不瞭解你方法的目的,我不可能說。但是,如果它是一種服務方法,那麼使用模擬框架應該可以方便地計算方法調用。 – augustearth