That's it. Now let's see code example.
Simple controller:
class SimpleController {
def dateService
def firstAction = {
render "first"
}
def secondAction = {
render "second"
}
def thirdAction = {
render dateService.currentDateFormated()
}
}
Service:
class DateService {
boolean transactional = true
public String currentDateFormated() {
return (new Date()).format("MM-dd-yyyy")
}
}
Unit test for controller.
class SimpleControllerTests extends ControllerUnitTestCase {
protected void setUp() {
super.setUp()
}
protected void tearDown() {
super.tearDown()
}
public void testFirstAction() {
controller.firstAction()
assertEquals("first", controller.response.contentAsString)
}
public void testSecondAction() {
controller.secondAction()
assertEquals("second", controller.response.contentAsString)
}
public void testThird() {
DateService dateService = new DateService()
controller.dateService = dateService
controller.thirdAction()
assertEquals(dateService.currentDateFormated(), controller.response.contentAsString)
}
}
If your controller references a service you have to explicitly initialise the service from your test like we did testThird() test in SimpleControllerTests tests.