使用Jasmine进行单元测试时,javascript的显示模块模式有哪些缺点?
潜在的解决方法是什么?
最佳答案
我正在使用requireJS,这是一种特殊的模块模式,已经使用了一年多,看不到任何缺点。您的模块应该使用依赖注入,以便您可以在测试中用模拟替换模块的依赖。
var myModule = (function(dep1){
function someFancyAlgorythm(a){return a +1}
return {
foo: function(a){
dep1(someFancyAlgorythm(a))
}
}
})(dep1)
在测试中
describe('myModule',function(){
var dep1;
var module;
beforeEach(function(){
dep1 = jasmine.createSpy();
module = myModule(dep1)
})
it('make crazy stuff', function(){
module.foo(1);
expect(dep1).toHaveBeenCalledWith(2);
})
})