Marcin Mikołajczyk
Marcin Mikołajczyk

Reputation: 731

Grails render template unit test issue

I've got an action in my controller:

def dirtyMarker() {
    render(template: '/layouts/modals/marker/dirtyMarker')
}

and Id like to unit test it. Ive been trying lots of possibilities. This may seem simple, but nothing seems to work (Grails 2.2.3). I know that here, testing might not be important but Ive got lots of other methods that returns a rendered template and I dont know how to implement this test..

Upvotes: 2

Views: 1100

Answers (2)

Sergei Shushkevich
Sergei Shushkevich

Reputation: 1376

You can also mock the template:

void testDirtyMarker() {
    views['/layouts/modals/marker/_dirtyMarker.gsp'] = 'mock contents'
    controller.dirtyMarker()
    assert response.text == 'mock contents'
}

See Testing Template Rendering for details

Upvotes: 2

Kamil Mikolajczyk
Kamil Mikolajczyk

Reputation: 911

seems to me that this should work:

void dirtyMarker() {
    controller.metaClass.render = { Map params ->
        assert params.template == '/layouts/modals/marker/dirtyMarker'
        return 'a'
    }

    def result = controller.dirtyMarker()

    assert result == 'a'
}

Upvotes: 4

Related Questions