[英]Mocking dependency in Node (mainly for unit testing)
在提出問題之前搜索了一段時間。
.
|____lib
| |____bar.js
| |____baz.js
| |____foo.js
|____test
| |____bar.js
| |____baz.js
| |____foo.js
相對於上述的文件結構, ./lib/foo.js
需要./lib/bar.js
, ./lib/bar.js
需要./lib/baz.js
。
通過./test/foo.js
單元測試./lib/foo.js
,我想模擬./lib/bar.js
,所以,我只關心./lib/foo.js
。 一旦./test/foo.js
中的測試結束,我想重置/取消模擬./lib/bar.js
。
通過./test/bar.js
單元測試./lib/bar.js
,我想模擬./lib/baz.js
,所以,我只關心./lib/baz.js
。 一旦./test/foo.js
中的測試結束,我想重置/取消模擬./lib/baz.js
。
等等等等。
或者換句話說,我想在測試文件中模擬依賴項並在需要時重置。
最有可能在測試文件中多次嘲笑並在測試文件中重新安裝完畢。
或者可能是我可以使用一些文件級別的閉包變量來控制本地模擬
下面提到的StackOverflow帖子有很好的討論,但我無法得出任何結論。
我遇到了以下模塊
還有其他人 。
在上面,看起來像mockery解決我的用例,主要是重置/取消模擬模擬的依賴 。
如何在proxyquire中實現相同的目標 ?
是否還有其他模塊可以解決上述用例?
例如,為了測試foo.js
我會:
var rewire = require('rewire');
var deride = require('deride');
var Foo = rewire('../lib/foo');
var mockBar, foo;
describe('something', function() {
beforeEach(function() {
mockBar = deride.stub(['barMethod']);
mockBar.setup.barMethod.when('bob').toReturn('Hello bob');
Foo.__set__('bar', mockBar);
foo = new Foo();
});
it('does something', function() {
foo.someMethod('bob');
mockBar.expect.barMethod.called.withArgs(['bob']);
});
});
而且沒有任何不必要的要求。
免責聲明:我是deride的作者之一:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.