Я пытаюсь научиться юнит-тестированию для NodeJS. Я пробую жасминовые рамки.
Я написал спецификацию, которая проверяет, была ли вызвана экспресс-функция контроллера по запросу.
Это мой файл спецификаций
var request = require("request");
var base_url = "http://localhost:3000/";
var mock = require('mock-require');
describe("Testing hotelSearchController", function(){
var server, mockHandle;
beforeEach(function(){
mockHandle = {
handleSearchRequest : (req, res) => { res.send("hi");}
}
var hotelSearchController = {
handleSearchRequest: mockHandle.handleSearchRequest
};
mock("../../app/controllers/hotelSearchController", hotelSearchController);
server = require("../utils/server")();
});
afterEach((done)=>{
mock.stopAll();
server.close(done);
});
it('should call handleSearchRequest()', function(done) {
var spy = spyOn(mockHandle, "handleSearchRequest").and.callThrough();
request.get(base_url+"search", function(error, response, body) {
expect(body).toBe("a");
expect(spy).toHaveBeenCalled();
done();
});
});
});
Моя проблема в том, что когда я запускаю тестирование, не учитывается насмешка над модулем контроллера, вызывается реальный модуль и его функция. Кроме того, шпион также терпит неудачу. Может ли кто-нибудь помочь мне с этим?