통합 테스트를 작성하는 다음 경로 (명시 적)가 있습니다.Sinon-Chai를 사용할 때 "오류 : 2000ms 초과"오류 메시지가 표시됩니다.
여기에 코드입니다 :
var q = require("q"),
request = require("request");
/*
Example of service wrapper that makes HTTP request.
*/
function getProducts() {
var deferred = q.defer();
request.get({uri : "http://localhost/some-service" }, function (e, r, body) {
deferred.resolve(JSON.parse(body));
});
return deferred.promise;
}
/*
The route
*/
exports.getProducts = function (request, response) {
getProducts()
.then(function (data) {
response.write(JSON.stringify(data));
response.end();
});
};
내가 모든 구성 요소가 함께하지만 가짜 HTTP 응답으로 작동하는지 테스트 할, 그래서 요청/HTTP 상호 작용의 그루터기를 만드는 오전.
나는 Chai, Sinon 및 Sinon-Chai와 Mocha를 테스트 러너로 사용하고 있습니다. 응답 (Response.Write를)에 기록 된 인수가 테스트가 확인 통과 일치하는 경우
var chai = require("chai"),
should = chai.should(),
sinon = require("sinon"),
sinonChai = require("sinon-chai"),
route = require("../routes"),
request = require("request");
chai.use(sinonChai);
describe("product service", function() {
before(function(done){
sinon
.stub(request, "get")
// change the text of product name to cause test failure.
.yields(null, null, JSON.stringify({ products: [{ name : "product name" }] }));
done();
});
after(function(done){
request.get.restore();
done();
});
it("should call product route and return expected resonse", function (done) {
var writeSpy = {},
response = {
write : function() {
writeSpy.should.have.been.calledWith("{\"products\":[{\"name\":\"product name\"}]}");
done();
}
};
writeSpy = sinon.spy(response, "write");
route.getProducts(null, response);
});
});
:
다음은 테스트 코드입니다. 그러나 그것은 문제가 해결되지 않는, 내가 this answer를 참조했습니다
"2000ms의 제한 시간이 초과 오류"
가 : 문제는 테스트가 실패하면 실패 메시지는 것입니다.
올바른 테스트 이름과 실패 이유를 표시하려면 어떻게해야합니까?
NB 2 차 질문은 응답 객체가 개선 될 수 있다고 주장 할 수 있습니까?
.done() 고정! 나는 그것을 어떻게 놓쳤을 까!? 감사. –
500 이상의 사양을 실행하는 중에이 오류가 발생하는 경우에 대한 아이디어가 있습니까? –
> 예외가 어딘가에서 삼켜지고 있습니다. – givanse