Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript mock.verify()不';t测试失败-如果从Promise回调调用_Javascript_Es6 Promise_Sinon - Fatal编程技术网

Javascript mock.verify()不';t测试失败-如果从Promise回调调用

Javascript mock.verify()不';t测试失败-如果从Promise回调调用,javascript,es6-promise,sinon,Javascript,Es6 Promise,Sinon,这个问题与这里的问题非常相似: 我将使用相同的示例: it("test case 100", () => { return getPromiseA().then((A1) => { const mock1 = sinon.mock(MyObject); mock1.expects("someMethod").twice(); A1.getPromiseB("1234").then((response) => {

这个问题与这里的问题非常相似:

我将使用相同的示例:

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.expected(“someMethod”).tweep()mock1.verify()时,code>应失败
被称为。
在正常情况下,
mock1.verify()将引发异常,测试用例将失败

但是在上面的例子中,测试用例并没有失败。 浏览器控制台中发布了一个错误-就是这样

解决方法是测试用例失败。
有什么想法吗?

明白了,使用连锁承诺时可能会有点混乱。以下是可以做的事情:

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.
});

这解决了我所面临的问题。

我对Sinon不太了解,但一般来说,异步操作会导致测试在异步功能解决之前完成,这是您的问题。也许这一页能帮上忙