为Angular控制器编写茉莉花测试

时间:2014-06-19 14:39:19

标签: angularjs jasmine

在我的控制器加载角度时,我执行一堆初始化。一些初始化是本地的,而其他初始化是通过http调用。

在编写测试用例时,为了检查变量是否初始化为应该是什么 我目前正在初始化控制器的每个测试案例如下:

describe('on-load',function(){

  it('should initialize scope.player to xyz if some-dependency is abc',function(){
    createController();
    expect( .... );
  }

  it('should initialize scope.player to mno if some-dependency is def',function(){
    createController();
    expect( .... );
  }

  it('should initialize scope.canvas.size to 900',function(){
    createController();
    expect( .... );
  }

}

这是考虑为角度控制器编写茉莉花测试的正确方法吗?

2 个答案:

答案 0 :(得分:0)

控制器将在每个it块中创建,我认为它很好。

答案 1 :(得分:0)

没有正确或更正确的方法,这一切都取决于你想要测试的......

例如,如果你有这样的东西:

angular.contoller('controller', function controller() {
    this.init = function() {}
    this.init();
}

直接在控制器中调用的存根/模拟$http.get()的示例:http://moduscreate.com/unit-testing-w-angularjs/。注意 - 不是将函数赋值给变量 createControlle ,而是可以在 beforeEach 块之外提取它。

如果没有.init()部分中的存根方法beforeEach()并且在每个部分中实例化控制器,则无法测试.init()之类的方法。 因为如果你要在 beforeEach 中创建控制器,那么要延迟它的内部方法。