使用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);
  })
})

07-24 17:52