sinon.match()不将对象与Json.stringify响应匹配

时间:2019-06-18 14:28:31

标签: javascript unit-testing mocha sinon

我正在测试一个简单的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
            }

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

因为JSON.stringify转换为字符串,但是预期的结果是JSON对象,所以它失败了。