此问题与此处的问题非常相似:https://github.com/sinonjs/sinon/issues/2138
我将使用相同的示例:
it("test case 100", () => {
return getPromiseA().then((A1) => {
const mock1 = sinon.mock(MyObject);
mock1.expects("someMethod").twice();
A1.getPromiseB("1234").then((response) => {
mock1.restore();
mock1.verify();
}).catch((error) => {
console.log("+++--- (Error) END of testCase +++++");
}
}, (rejectedP) => {
}).catch((err) => {
console.log("-------- (REJ-C) END of testCase ++++");
});
});
当mock1.expects("someMethod").twice();
时,代码行mock1.verify();
应该失败
叫做。
在正常情况下,mock1.verify();
将引发异常,并且测试用例将失败。
但是在上面的示例中,测试用例没有失败。 在浏览器控制台中发布了一个错误-就是这样。
此问题的解决方法是测试用例应该失败。 有什么想法吗?
答案 0 :(得分:0)
知道了,使用链接的诺言时可能会造成一些混乱。这是可以做的:
it("test case 100", () => {
let mock1 = null;
return getPromiseA().then((A1) => {
mock1 = sinon.mock(MyObject);
mock1.expects("someMethod").twice();
return A1.getPromiseB("1234");
}).then(() => {
// response from "A1.getPromiseB"
mock1.restore();
mock1.verify();
});
// No need for catch, since the error will be caught and reported as failure by Sinon.
});
这解决了我面临的问题。