我有多个使用共享基础文件(称为testBase.js)的Mocha测试文件。它负责建立所有的存根和间谍。具有多个摩卡测试文件的Sinon
如果我运行通过摩卡个人文件中的所有测试用例通过但当它贯穿摩卡测试* .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不能拨打两次电话。
是否在导入多个文件之前调用两次?有人可以提出任何可能的解决方案吗?我也尝试sinon.sandbox
,但它不起作用
是'beforeEach'和'afterEach'位于* testBase *文件的根目录?或者他们被封装在一个函数中并以某种方式导出?请提供更多信息。 – vsenko
这两个函数都位于基本文件中,它们在testInit函数中,然后导出到测试用例 –
您需要导出纯函数 - 未包含beforeEach和afterEach。然后将它们传递到beforeEach和afterEach中的每个文件的描述块中。否则,你会有错误,因为它们都适用于外部(全局)范围。我在我的答案的底部描述了这一点 – oligofren