Sinon存根未正确还原

py_script

我正在使用mocha,chai和sinon来测试我的节点表达代码。

我遇到一个奇怪的问题,看起来sinon无法恢复存根,因此在下一个测试中,我得到了众所周知的错误

Attempted to wrap <method1> which is already wrapped

这是我的工作

  • 在测试用例中使用mocha-steps代替it()子句,以便它们按顺序运行(我想确保它不是异步竞争条件)
    • 我使用sinon-test自动清除存根,以防万一我做错了什么

这是一个测试用例:

step('should do stuff', test(function () {

    const stub1 = sinon.stub(my_model1, 'method1');

    chai.request(server)
        .get('/endpoint')
        .send(body)
        .end(function (err, res) {
            stub1.restore();
            do_various_assertions(err, res);
        });
}));

还有一个

step('should do other stuff', test(function () {

        const stub1 = sinon.stub(my_model1, 'method1');

        chai.request(server)
            .get('/endpoint')
            .send(slightly_different_body)
            .end(function (err, res) {
                stub1.restore();
                do_various_assertions(err, res);
            });
    }));

我在上面的错误

Attempted to wrap <method1> which is already wrapped

如果我在第二种情况下将存根注释掉,则效果很好。但为什么?我究竟做错了什么?

1993年

下一步应该知道上一步已经完成,需要调用done函数。在您的示例中,第二步不等待第一步,method1也不会还原。

step('should do stuff', function (done) {

    const stub1 = sinon.stub(my_model1, 'method1');

    chai.request(server)
        .get('/endpoint')
        .send(body)
        .end(function (err, res) {
            stub1.restore();
            do_various_assertions(err, res);
            done();
        });
});

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用Sinon沙箱还原间谍/存根功能

来自分类Dev

sinon无法正确恢复存根原型方法?

来自分类Dev

sinon无法正确恢复存根原型方法?

来自分类Dev

使用sinon spy还原或重置的正确方法是什么?

来自分类Dev

sinon 存根不工作

来自分类Dev

Groovy Spock测试未正确存根-收到null

来自分类Dev

使用Sinon存根get方法

来自分类Dev

使用sinon存根原型方法

来自分类Dev

在sinon中存根依赖函数

来自分类Dev

Sinon存根不被称为

来自分类Dev

sinon:如何存根实例方法

来自分类Dev

用sinon模拟/存根猫鼬findById

来自分类Dev

用Sinon存根React组件方法

来自分类Dev

sinon.stub不存根原始方法

来自分类Dev

如何使用Sinon存根jQuery方法?

来自分类Dev

Sinon-如何对嵌套函数进行存根?

来自分类Dev

一个存根如何与sinon相符?

来自分类Dev

在Mocha中使用sinon创建请求存根

来自分类Dev

使用sinon存根主干listenTo回调

来自分类Dev

Sinon匿名存根作为参数传递

来自分类Dev

在sinon存根中替换多种方法

来自分类Dev

存根使用Sinon进行回调的方法

来自分类Dev

用Sinon存根window.location.href

来自分类Dev

Sinon存根作为参数传递的函数

来自分类Dev

如何声明sinon猫鼬存根

来自分类Dev

使用Sinon存根pg-promise

来自分类Dev

如何使用sinon存根非对象函数

来自分类Dev

用sinon模拟/存根猫鼬findById

来自分类Dev

如何使用Sinon存根jQuery方法?