gpt4 book ai didi

javascript - stub /模拟一个在需要时返回函数的库

转载 作者:搜寻专家 更新时间:2023-10-31 23:25:22 24 4
gpt4 key购买 nike

所以我试图模拟或 stub 调用 growl图书馆。当需要时,它返回一个函数,该函数将在调用时触发咆哮通知。我不知道如何在我的测试中模拟或 stub 。

这是我到目前为止尝试过的:

/* /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 的依赖,并在内部使用导出的函数。

// 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();
});
});

如果有人有更好的解决方案,我很乐意看到。

关于javascript - stub /模拟一个在需要时返回函数的库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21525026/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com