【发布时间】:2020-09-07 04:54:40
【问题描述】:
我有一个控制器异步函数,它调用另一个异步导出函数,而不是测试依赖项,我只想测试该依赖项函数的特定结果。但是,当我存根函数时,什么都没有发生,返回结果就好像我从来没有存根函数一样。
exports.getUser = async (req, res) => {
try {
let user = null;
if(req && req.params.id) {
const id = parseInt(req.params.id, 10);
if(isNaN(id)) {
return res.status(500).json({ message: 'Invalid request.' });
}
user = await userService.getUserById(id);
if(!products) {
return res.status(404).json({ message: `user does not exist for the given id` });
}
} else {
user = await userService.getUser();
if(!user || user.length === 0) {
return res.status(500).json({ message: 'user not available' });
}
}
res.jsonp({user});
} catch(e) {
return res.status(500).json({message: e.message});
}
}
现在我正在尝试对上述函数进行存根。但我的存根不工作。
测试文件:
const expect = require("chai").expect;
const request = require("supertest");
const server = require('../../server');
const sinon = require('sinon');
const userController = require('../../contollers/user');
describe('GET /v1/user', () => {
let userControllerStub;
beforeEach(() => {
userControllerStub = sinon
.stub(userController, 'getUser')
.resolves({getUser: [{ id: 123, name: 'xxxxx' }]});
})
afterEach(() => {
userControllerStub.restore();
});
it('Should return list of users', (done) => {
try {
request(server).get('/v1/user')
.end((err, res) => {
if (err) {
done(err);
}
console.log('res', res.body);
expect(res.statusCode).to.equal(200);
//expect(res.body.user).to.have.lengthOf(4); here i am expetcing stub should return the value
done();
});
} catch (err) {
done(err)
}
});
});
非常感谢任何帮助。
【问题讨论】:
标签: javascript node.js express sinon supertest