2016-07-20 24 views
0

Ich habe einen einfachen Testcontroller.Gibt das Vorhandensein eines Textes in der vom Controller zurückgegebenen Ansichtsdatei an.

package taglibexample 

class HelloWorldController { 

    def index() {  

     render(view: "index", model: [id:2]) 
    } 
} 

Die Ansicht, dass der obige Controller macht wie folgt:

<!doctype html> 
<html> 
<head> 

<title> Hello World </title> 
</head> 

<body> 

<h1> Hello World! ${ id } </h1> 

</body> 

</html> 

Nun, ich mag diese Controller-Methode testen und auf das Vorhandensein von dem Text „Hallo Welt 2“ behaupten. Der Code, den ich bisher haben und das hat nicht funktioniert wie folgt dar:

package taglibexample 

import static org.junit.Assert.* 
import org.junit.* 

class HelloTests { 

    def controller 


    @Before 
    void setUp() { 

     controller = new HelloWorldController() 
    } 


    @Test 
    void testSomething() { 

     def model = controller.index() 

     assertTrue controller.response.getContentAsString().contains("Hello World! 2") 


    } 

} 

, wie ich dies zu erreichen kann? Ich schätze jede Hilfe! Vielen Dank!

Antwort

-1

Grails Dokumentation scheint dies in einer sehr klaren Art und Weise zu erklären, das richtige für Ihre Grails Version

Zum Beispiel werfen Sie einen Blick von diesem Beispiel in Grails 2.5.5:

import grails.test.mixin.TestFor 
import spock.lang.Specification 

@TestFor(SimpleController) 
class SimpleControllerSpec extends Specification { 

    void "test hello"() { 
     when: 
     controller.hello() 

     then: 
     response.text == 'hello' 
    } 
} 

Es testet die tatsächliche Antwort, die vom Framework generiert wird. In diesem Fall sein sehr einfaches Wort, aber es kann Ansicht nicht der Name der Ansicht gerendert werden

+0

Sorry ich finde nur Geltendmachung von Ansichtsnamen oder Asserting Modelle von Controllern zurückgegeben. Ich möchte das Vorhandensein eines Textes in der vom Controller zurückgegebenen Ansichtsdatei bestätigen. Ich benutze Grails 2.2. – kofhearts

+0

Alle Dokumentationen zeigen, wie dies genau gemacht wird. Ich habe meine Antwort aktualisiert –

+0

Ich denke nicht, dass dies eine gute Antwort ist. Der Test, den Sie oben zitiert haben, wird für das in der Frage beschriebene Szenario nicht funktionieren. Der oben genannte Test würde funktionieren, wenn der Controller etwas wie 'render' hallo' machen würde. –