具有多个 mocha 测试文件的 Sinon
Sinon with multiple mocha test files
我有多个 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 不得为一次摩卡测试调用两次。
导入多个文件会调用两次beforeEach吗?有人可以对此提出任何可能的解决方案吗?我也试过 sinon.sandbox
但没用
我们需要看看你在基础文件中的要求如何才能确定。
我的猜测很简单,您需要来自多个文件的文件,并且每次执行此操作时都会添加设置和拆卸功能。发生这种情况是因为所有测试共享相同的外部范围。请求 Base 文件十次也会添加 beforeEach 十次。
正确的方法是使用 sinon.sandbox 或 sinon-test。更容易避免一个测试干扰下一个。
但是无论你做什么,你都需要导出函数 运行 在每个文件的 beforeEach 中
通常是这样的
const base = require('./base')
describe('module one', ()=> {
beforeEach(base.commonStubs);
it('should.... ',..);
})
我有多个 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 不得为一次摩卡测试调用两次。
导入多个文件会调用两次beforeEach吗?有人可以对此提出任何可能的解决方案吗?我也试过 sinon.sandbox
但没用
我们需要看看你在基础文件中的要求如何才能确定。
我的猜测很简单,您需要来自多个文件的文件,并且每次执行此操作时都会添加设置和拆卸功能。发生这种情况是因为所有测试共享相同的外部范围。请求 Base 文件十次也会添加 beforeEach 十次。
正确的方法是使用 sinon.sandbox 或 sinon-test。更容易避免一个测试干扰下一个。
但是无论你做什么,你都需要导出函数 运行 在每个文件的 beforeEach 中
通常是这样的
const base = require('./base')
describe('module one', ()=> {
beforeEach(base.commonStubs);
it('should.... ',..);
})