Mocha,Chai,Sinon在多个文件中测试错误

时间:2017-12-21 11:06:17

标签: node.js unit-testing mocha sinon

我有多个要测试的文件,所有这些文件都使用相同的自定义../tools/http.util.js库:

const HttpUtil = require('../libs/http.util');

所以,我用这段代码在每个文件中嘲笑这个库:

before('before', function () {
    let HttpUtilMock = sinon.stub();
    HttpUtilMock.prototype.formGetUri = sinon.stub().returns("http://mock.com/");
    HttpUtilMock.prototype.formBaseRequestHeader = sinon.stub().returns("headers");
    testFunction.__set__("HttpUtil", HttpUtilMock);
});

当我运行mocha test/ --recursive --timeout=3000时,我得到问题http.util文件在第一个测试文件中被模拟,但它没有在第二个文件中嘲笑 - 我得到启动第二个文件测试时http.util出错。

我认为,在完成第一次文件测试后我必须清除测试数据,但是我无法找到任何关于sinon的清除命令,以清除变量mock。

2 个答案:

答案 0 :(得分:0)

要清除sinon模拟,请使用还原方法myMock.restore();

答案 1 :(得分:0)

我正在考虑的另一种替代方法,而不是使用rewire模块。

....
const sinon = require('sinon');
let sandbox;

before('before', function () {
    sandbox = sinon.sandbox.create();
    sandbox.stub(HttpUtil, 'formGetUri').returns('http://mock.com');
    sandbox.stub(HttpUtil, 'formBaseRequestHeader').returns('headers');    
});

after('after', function() {
  sandbox.restore();
});

必须在测试完成后致电restore()