我有一个看起来像这样的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"
字符串?
此外,这种类型的测试是否值得,或者我应该重写它?如果我要改写它,那怎么样?
答案 0 :(得分:1)
因为您正在测试$scope
而不是Controller函数的属性,所以您需要使用模拟的$scope
来模拟整个Ctrl的创建。
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")
});