我有一个库说'services.js'
class Service {
static doSomething() {
return Promise.resolve({});
}
}
我还有另一个处理程序“ handler.js”
let Service = require('./Service');
exports.search = (req, res) => {
Service.doSomething().then(result => {
res.send(result);
}).catch(err=>{
res.status(500).send(err);
});
}
我想测试我的处理程序。为此,我尝试在Service类中添加静态方法,例如:
let Service = require(path to services.js),
Handler = require(path to handler.js),
http_mocks = require('node-mocks-http'),;
describe("handler tests : ", () => {
before(()=>{
sinon.stub(Service, 'doSomething').callsFake(()=>{});
})
it('should succeed', (done) => {
let response = buildResponse();
let request = http_mocks.createRequest({
method: 'GET',
url: '/search?q=2',
});
response.on('end', function() {
let result = JSON.parse(response._getData());
//Some validation
done();
});
Handler.search(request, response);
done();
})
})
我收到TypeError:Service.doSomething不是一个函数。还有其他选择吗?我也尝试使用嘲讽。我在想什么吗
答案 0 :(得分:0)
我在测试代码中发现了一个错误。 Service.doSomething()
返回promise
,但在测试文件中,我们使用callsFake
将其存根,但它不返回promise
我们可以像这样使用resolves
before(() => {
sinon.stub(Service, 'doSomething').resolves('asik');
});
注意:resolves
自Sinon 4开始受到支持。