I am trying to write unit tests for a service which use grailsApplication.config to do some settings. It seems that in my unit tests that service instance could not access the c
If you use @TestFor
Grails (2.0) already mock grailsApplication for you, just set your configs, but do not declare the grailsApplication. Doing that overrides the mocked instance.
@TestFor(MyService)
class MyServiceTests {
@Before
public void setUp() {
grailsApplication.config.something = "something"
}
@Test
void testSomething() {
MyService service = new MyService()
service.grailsApplication = grailsApplication
service.doSomething()
}
}
EDIT:
You declared a String
, to add to config you must parse this. See here an example.
Basically you use the ConfigSlurper().parse()
to get a ConfigObject
, and use grails.config.merge()
to add the contents to the config.