0

我有一个如下所示的 controllers.js 文件:

angular.module('MyApp.controllers', []).

controller('MyCtrl', [function() {

  $scope.type = "default";

}]);

而且,controllersSpec.js 看起来像这样:

describe('controllers', function(){

  beforeEach(module('MyApp.controllers'));

  describe('MyCtrl', function() {

    it('should have a property named "type" whose default value is "default"', inject(function() {

      expect(MyCtrl.type).toBe("default");

    }));

  });

});

如何测试MyCtrl控制器是否具有type属性并且该属性的默认值是"default"字符串?

此外,这种类型的测试是否值得或我应该重写它?如果我应该重写它,那么如何?

4

1 回答 1

1

因为您正在测试您的$scope而不是您的 Controller 函数的属性,所以您需要使用 mocked 来模拟 Ctrl 的整个创建$scope

var scope, controller;

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

it('should have a default type when created', function() { 
  expect(scope.type).toBe("Default")
});
于 2013-09-14T10:31:13.610 回答