2017-02-21 4 views
1

Ich habe den Aufbau einer CRUD-Anwendung mit 20 Tests bestanden. Ich verwende EJS, um die Ansichten zu rendern, und jetzt habe ich ein Problem mit meinen Tests.Test Renderings Ansichten mit EJS in Mocha

Als einfaches Beispiel lassen Sie uns sagen, dass ich das zu sehen war die Überprüfung, wenn eine GET-Anforderung an '/' gesendet wird, ein JSON wie res.json({message:'hello'}) so gesendet, so würde ich, so dass res.body.message meine Tests in Mocha eingerichtet könnte entspricht "Hallo".

Wie auch immer, wenn ich die index.ejs Seite rendern wollte anstatt eine JSON zu senden. So würde es wie res.render('index',{message:'hello'}) aussehen. Wie kann ich res.render() testen? oder genauer gesagt, wie kann ich das an res.render() übergebene Objekt testen?

EDIT: Die Lösung für dieses Problem (und Probleme dieser Art) kann unter Verwendung eines Testparadigma Funktionsprüfung genannt gelöst werden. Google es.

Antwort

1

Um zu testen, http bekommen im Wesentlichen kann als eine Notwendigkeit, eine Route zu testen verstanden werden. Ihr Test sollte also eine Expect-Klausel enthalten (was zu erwarten ist, wenn die Route gesucht wird) und die zu validierende Antwort, in diesem Fall ein JSON-Objekt.

Mit Mokka, können Sie den Test als

it('should respond with JSON data', function (done) { 
    request(server) 
    .get('/about/jv') 
    .expect(200) 
    .end(function (err, response) { 
     assert.equal(response.header['content-type'], 'application/json; charset=utf-8'); 
     assert.deepEqual(response.body, { 
     "data":{ 
     "username":"hello"} 
     }); 
     done(); 
    }); 
}); 

beschreiben, weil Sie einen Server benötigen eine HTTP-Anfrage an, ‚Supertest‘ zu laufen, ein Knoten Paket Ihre ‚server.js‘ verwendet wird, beginnen zu initialisiere den Server und teste mit Anfrage (Server).

Überprüfen Sie this - Der GitHub Repo hat die vollständige Testvorlage für diese Anforderung. Es hat auch einen Test für das zurückgegebene JSON-Objekt.

+1

Während dieser Link die Frage beantworten kann, ist es besser, die wesentlichen Teile der Antwort hier aufzunehmen und den Link als Referenz bereitzustellen. Nur-Link-Antworten können ungültig werden, wenn sich die verknüpfte Seite ändert. - [Aus Bewertung] (/ review/low-quality-posts/16596394) –

+0

Danke, Patrick! Der EDIT-Teil der Frage verminderte irgendwie meinen Enthusiasmus, vollständig zu antworten, und ich war mir nicht sicher, ob der Fragesteller wirklich nach einer Antwort sucht, aber da andere mit einer ähnlichen Anforderung zu der Frage kommen, stellte ich den Link zur Verfügung. – user2347763

+0

@PatrickHund Wenn meine Bearbeitung Ihren Bedenken entspricht, entfernen Sie bitte die -1-Downvote – user2347763