减少用于测试angularjs控制器的样板

时间:2014-09-07 13:24:53

标签: javascript angularjs testing

在我的角应用程序中,我有大约30个控制器和1个测试文件。那些测试文件总是以这样的样板开头:

'use strict';

describe('Controller: SomeController', function ()
{
  var controller;
  var scope;
  beforeEach(function ()
  {
    module('SomeControllerModule');

    inject(function ($controller, $rootScope)
    {
      scope = $rootScope.$new();
      controller = $controller('SomeController',
        {
          $scope: scope
        });
    });
  });

  it('should prepare controller scope', function ()
  {
    console.log('scope', scope);
  });
});

有没有办法以某种方式缩短它,所以我不必在每个文件中重复它?

2 个答案:

答案 0 :(得分:1)

ng-describe看起来它可能非常有用(我还没有亲自使用它)。有了这个,您的代码就变成了:

ngDescribe({
    modules: 'SomeControllerModule',
    controllers: 'controller',
    tests: function (deps) {
        it('should prepare controller scope', function () {
            console.log('scope', deps.controller);
        });
    }
});

不幸的是,他们目前不支持茉莉花,可能会为很多人制定茉莉花。

答案 1 :(得分:0)

是的,我有一个更清洁的方法:

describe('HomeController', function() {

  var $scope;

  beforeEach(module('app'));

  beforeEach(inject(function($rootScope, $controller) {
    $scope = $rootScope.$new();
    $controller('HomeController', { $scope: $scope });
  }));

  it('true should be truthy', function() {
    expect(true).toBeTruthy();
  });

});

另请查看AngularJS项目中可能需要的所有螺母和螺栓附带的AngularJS Scaffolding