我正在测试一个简单的Express路由,该路由返回一个json对象和带有sinon的usin摩卡以匹配响应。
这是简单的快速回复/ login
const login = async (req, res) => {
let response = {
success: true,
id: "id0090",
}
res.end(JSON.stringify(response));
}
这是带有micha和sinon的简单提示
it('res.end should be called with success true ', async () => {
let req = {
body: {}
}
let res = {
end: sinon.spy(),
}
await login(req,res);
let expected = {
success: true,
id: "id0090",
}
sinon.assert.calledWith(res.end, sinon.match(expected));
});
我收到此错误,但正如您所见,两者相同。
AssertError: expected end to be called with arguments
{"success":true,"id":"id0090"} match(success: true, id: id0090)
有趣的是,如果我从JSON.stringify
中删除了login
,但是这不是主意。
const login = async (req, res) => {
let response = {
success: true,
id: "id0090",
}
res.end(response); // this make the test pass
}
感谢您的帮助
答案 0 :(得分:0)
因为JSON.stringify转换为字符串,但是预期的结果是JSON对象,所以它失败了。