Sinon有多个mocha测试文件

时间:2017-06-19 11:50:35

标签: node.js mocha sinon stub

我有多个Mocha测试文件,使用一个名为testBase.js的共享基本文件。它负责设置所有存根和间谍。

如果我通过mocha运行单个文件,所有测试用例都通过但是当它通过mocha * .js运行测试时,测试用例开始失败并引发错误

TypeError: Attempted to wrap send which is already wrapped

这是我的beforeEach和afterEach阻止

beforeEach(function (done) {
    context.alexaSpy = sinon.spy(alexa, "send");
}

beforeEach(function (done) {
    context.alexaSpy.restore();
}

我实际上打印了两个块中的日志,我发现有一件奇怪的事情。我这样看日志

-- BeforeEach Fired Test1
-- BeforeEach Fired Test1
-- AfterEach Fired Test1
-- AfterEach Fired Test1

我不知道它为什么要两次打电话,这是问题的根本原因。 BefireEach不得再拨两次mocha测试。

导入多个文件是否会在每次两次之前调用?有人可以建议任何可能的解决方案吗?我也尝试了sinon.sandbox,但它不起作用

1 个答案:

答案 0 :(得分:0)

我们需要确定您在基本文件中的要求是否确定。

我的猜测只是您需要来自多个文件的文件,每次执行此操作时都会添加设置和拆卸功能。这是因为所有测试共享相同的外部范围。要求基础文件十次也会将beforeEach添加十次。

正确的方法是使用sinon.sandbox或sinon-test。更容易避免一个测试干扰下一个测试。

但无论你做什么,你都需要导出该函数并在每个文件的beforeEach中运行它

通常喜欢这个

const base = require('./base')

describe('module one', ()=> {
    beforeEach(base.commonStubs);

    it('should.... ',..);
 })