我想测试控制器使用正确的参数调用服务方法。最好的方法是什么?
我目前的计划是使用mockFor,然后通过闭包检查传入的值。是否有更好的方法通过mockFor或模拟对象进行测试,类似于我可以用mockito执行同样的方法调用参数值测试?
class HappyControllerTests extends ControllerUnitTestCase {
:
void testSomeValue() {
def mockControl = mockFor(HappyService)
def givenSomeItem = null
mockControl.demand.serviceMethod(1..99) { String someItem -> givenSomeItem = someItem; }
controller.happyService = mockControl.createMock()
controller.someAction()
mockControl.verify()
assertEquals("specific value", givenSomeItem)
}
}
谢谢!
答案 0 :(得分:13)
我很少使用mockFor,因为我发现groovy内置了metaClass的东西而且as ClassName
更易于使用且更强大,我会这样做:
void testSomeValue() {
def givenSomeItem = null
controller.happyService = [
serviceMethod: { String someItem -> givenSomeItem = someItem }
] as HappyService
controller.someAction()
assertEquals "specific value", givenSomeItem
}