Czy istnieje prosty sposób na kpiny z obiektu/funkcji hapi reply dla łatwego testowania jednostkowego?jak wykpić odpowiedź hapi.js z sinonem na testowanie jednostki
Przykłady, które widzę dla hapi, wszystkie używają server.inject i framwork "lab" do testowania. Jestem ciekawy, jak mogę dalej używać mocha i chciałbym przetestować kontroler bezpośrednio, zamiast wstrzykiwać go do serwera.
Czy należy używać sondy do kpiny z obiektu odpowiedzi?
testów/post.js
before(function() {
PostController = proxyquire('../controllers/post', { 'mongoose': mongooseMock });
});
it('should be able to create a post', function(done){
var request.payload = {foo:bar};
var reply = sinon.spy(); //is this how I should mock this?
PostController.create.handler(request, reply);
reply.should ...// how do I test for statuscode 201, Boom errors, and response msgs
});
controllers/post.js
var Boom = require('Boom')
Post = require('../models/Post')
module.exports = {
create: {
auth: 'token',
handler: function (request, reply) {
var p = new Post({foo:request.payload.foo});
p.save(function (err, results) {
if (!err && results)
reply(results).created();
else {
reply(Boom.badImplementation(err));
}
});
}
}
Wreszcie, należy po prostu przełączyć się do laboratorium, a nie?
więc kiedy ogłaszasz zatrzask sinon na zapisie post, czy zastąpi metodę zapisu, którą wywoła kontroler serwera? – MonkeyBonkey
@MonkeyBonkey Tak, będzie. –