Javascript 更改功能后,Sinon测试失败
我有这个测试:Javascript 更改功能后,Sinon测试失败,javascript,node.js,sinon,Javascript,Node.js,Sinon,我有这个测试: describe('createNote', () => { beforeEach(() => { res = { json: sinon.spy(), sendStatus: sinon.spy(), }; }); afterEach(() => { noteService.createUserNote.restore(); }); it('should return user note
describe('createNote', () => {
beforeEach(() => {
res = {
json: sinon.spy(),
sendStatus: sinon.spy(),
};
});
afterEach(() => {
noteService.createUserNote.restore();
});
it('should return user note object', async () => {
// Arrange
modelResponse = {
id: 1,
userId: req.user.id,
...req.body,
};
sinon.stub(noteService, 'createUserNote')
.resolves(modelResponse);
// Act
await userController.createNote(req, res);
// Assert
sinon.assert.calledWith(
noteService.createUserNote,
req.user,
req.body.note,
);
sinon.assert.calledWith(res.json, { note: modelResponse });
});
它在第sinon.assert.calledWith(res.json,{note:modelResponse})行失败代码>
我真的不理解西农,所以我不知道为什么
这是我的userController代码:
createNote: async (req, res, next) => {
try {
const createNote = await noteService.createUserNote(
req.user,
req.body.note,
);
const note = await noteService.getUserNote(
req.user.id,
createNote.id,
);
return res.json({ note });
} catch (err) {
return next(err);
}
},
我最近对此进行了更改,因此假设我所做的某些事情导致测试失败:
createNote: async (req, res, next) => {
try {
const note = await noteService.createUserNote(
req.user,
req.body.note,
);
return res.json({ note });
} catch (err) {
return next(err);
}
},
这是我得到的错误:
1) User userController
createNote
should return user note object:
AssertError: async (user, text) => {
const [note] = await db.Note.createUserNote(user.id, text, db);
await emailService.userAlert(text, user.name);
return note;
} is not stubbed
at Object.fail (node_modules/sinon/lib/sinon/assert.js:106:21)
at /opt/atlassian/pipelines/agent/build/node_modules/sinon/lib/sinon/assert.js:35:24
at Array.forEach (<anonymous>)
at verifyIsStub (node_modules/sinon/lib/sinon/assert.js:22:5)
at Object.assert.(anonymous function) [as calledWith] (node_modules/sinon/lib/sinon/assert.js:77:9)
at Context.it (app/__tests__/controllers/user/userController.test.js:56:20)
at <anonymous>
1)用户用户控制器
createNote
应返回用户注释对象:
AssertError:async(用户,文本)=>{
const[note]=wait db.note.createUserNote(user.id,text,db);
等待emailService.userAlert(文本、用户名);
退货单;
}没有存根
at Object.fail(node_modules/sinon/lib/sinon/assert.js:106:21)
at/opt/atlassian/pipelines/agent/build/node_modules/sinon/lib/sinon/assert.js:35:24
在Array.forEach()处
在verifyIsStub(node_modules/sinon/lib/sinon/assert.js:22:5)
at Object.assert.(匿名函数)[as calledWith](node_modules/sinon/lib/sinon/assert.js:77:9)
在Context.it(app/__tests\u_/controllers/user/userController.test.js:56:20)
在
有人能解释什么地方出了问题以及如何解决吗?您还需要模拟getUserNote。更改后,您将从getUserNote获取note,然后将其发送到res.json
但在测试用例中,您没有将其删除。尝试在测试用例中添加以下内容:
sinon.stub(noteService, 'getUserNote')
.resolves(modelResponse);
怎么了?