I want to test that the controller calls the service method with the correct arguments. What is the best way to do that?
My current plan is to use mockFor and then through the closure check the value passed in. Is there a better way to do the test through mockFor or the mocked object similar to what I can do with mockito to perform this same method call argument value test?
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)
}
}
Thanks!
I rarely use mockFor as I find groovy's built in metaClass stuff and as ClassName
to be easier to work with and more powerful, I'd do this:
void testSomeValue() {
def givenSomeItem = null
controller.happyService = [
serviceMethod: { String someItem -> givenSomeItem = someItem }
] as HappyService
controller.someAction()
assertEquals "specific value", givenSomeItem
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With