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モックされた 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 に答える