如何解决类型错误:试图包装已经包装的 findById:使用 mocha、sinon、node 和 mongodb 进行单元测试
我正在尝试对我的控制器方法进行单元测试,这就是我尝试存根它时返回的内容:TypeError: Attempted to wrap findById which is already wrapped
。我尝试使用前后钩子,但它没有解决问题。我将 sinon-express-mock
用于 req 和 res,将 sinon
用于存根。
describe('controller getUserData',function() {
beforeEach(function() {
sinon.stub(UserData,"findById");
});
afterEach(function() {
UserData.findById.restore();
});
it('getUserData by Id',async function() {
const mockId = sinon.stub(UserData,'findById').returns(mockIdData[0]);
req = mockReq();
res = mockRes();
next = null;
req.params.id = mockIdData[0]._id;
await Controller.getUserData(req,res,next);
assert(mockId.calledWith(req.params.id));
assert(res.status.calledWith(200));
});
it('should return 404 when user data is not found',async function() {
sinon.stub(UserData,'findById').returns(null);
req = mockReq();
res = mockRes();
next = null;
await Controller.getUserData(req,next);
assert(res.status.calledWith(404));
});
});
这是我的控制器方法:
exports. getUserData = async (req,next) => {
const userData = await UserData.findById(req.params.id);
if (!userData) {
res.status(404).send();
}
res.status(200)
.json(
userData,);
};
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。