[英]Stubbing/mocking a library that returns a function when required
所以我试图模拟或存根调用growl库。 必要时,它返回一个函数,该函数将在调用时触发growl通知。 我无法弄清楚如何在我的测试中模拟或存根。
这是我到目前为止所尝试的:
/* /lib/some_code.js */
var growl = require('growl');
exports.some_func = function() {
growl('A message', { title: 'Title' });
};
(注意:我使用sinon-chai作为我的断言)
/* /test/some_code.js */
var growl = require('growl')
, some_code = require('../lib/some_code');
describe('Some code', function() {
it('sends a growl notification', function(done) {
var growlStub = sinon.stub(growl);
some_code.some_func();
growlStub.should.have.been.called;
done();
});
});
所以我想出了一个似乎有效的解决方案,不过我个人觉得它有点不干净。
测试中的代码只需要导出它对growl的依赖,并在内部使用export中的函数。
// Code under test
exports.growl = require('growl');
exports.some_func = function() {
exports.growl('message', { title: 'Title' });
};
// Test
var some_code = require('../lib/some_code');
describe('Some code', function() {
it('sends a growl notification', function(done) {
var growlStub = sinon.stub(some_code, 'growl');
some_code.some_func();
growlStub.should.have.been.called;
done();
});
});
如果有人有更好的解决方案,我很乐意看到它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.