Grails Spock 单元测试 - 什么是“1 *”以及为什么 "too few invocations"?
Grails Spock Unit Test - What is "1 *" and why "too few invocations"?
我在从其他人那里继承的控制器的单元测试中看到以下代码:
when: "When the controller executes a registration"
controller.index()
then: "the signup should show registration again"
1 * controller.cService.getRegions() >> []
1 * controller.dService.chkAvail(_) >> "AVAILABLE"
1 * controller.uService.createUser(_) >> { a-> throw new RuntimeException("Roll me back!")}
1 * controller.pService.registerPayMethod(_) >> { cc-> true }
view == "/signUp/su"
我理解 spock 单元测试的基础知识,但我不理解这些 1 *
行。
我也收到多个错误,例如:
junit.framework.AssertionFailedError: Too few invocations for:
1 * controller.cService.getRegions() >> [] (0 invocations)
Unmatched invocations (ordered by similarity):
None
您是在告诉 Spock,所讨论的方法必须恰好调用一次(1 * controller.cService.getRegions() >> []
意味着,该服务的 getRegions
必须调用一次(1 *
)并且return 将是一个空列表 (>> []
))。但它没有。这就是错误消息告诉您的内容 (0 invocations
)。
请查看以下示例:-
def "List Invocation Calls Test"() {
given:
List list = Mock();
when:
list.add(5)
list.add(15)
list.add(25)
then:
3 * list.add(_)
}
我在从其他人那里继承的控制器的单元测试中看到以下代码:
when: "When the controller executes a registration"
controller.index()
then: "the signup should show registration again"
1 * controller.cService.getRegions() >> []
1 * controller.dService.chkAvail(_) >> "AVAILABLE"
1 * controller.uService.createUser(_) >> { a-> throw new RuntimeException("Roll me back!")}
1 * controller.pService.registerPayMethod(_) >> { cc-> true }
view == "/signUp/su"
我理解 spock 单元测试的基础知识,但我不理解这些 1 *
行。
我也收到多个错误,例如:
junit.framework.AssertionFailedError: Too few invocations for:
1 * controller.cService.getRegions() >> [] (0 invocations)
Unmatched invocations (ordered by similarity):
None
您是在告诉 Spock,所讨论的方法必须恰好调用一次(1 * controller.cService.getRegions() >> []
意味着,该服务的 getRegions
必须调用一次(1 *
)并且return 将是一个空列表 (>> []
))。但它没有。这就是错误消息告诉您的内容 (0 invocations
)。
请查看以下示例:-
def "List Invocation Calls Test"() {
given:
List list = Mock();
when:
list.add(5)
list.add(15)
list.add(25)
then:
3 * list.add(_)
}