そのため、DOM で ngModel として指定されたプロパティを参照しているコントローラーをテストしています。しかし、コントローラーをテストしている間、テンプレートがありません。したがって、$scope.foo.property がコントローラーでアクセスされるたびに、エラーがスローされます。
質問する
1887 次
2 に答える
1
テストでは、コントローラーをインスタンス化する前にプロパティを定義できます。
it('should mock ng-model', inject(function($rootScope, $controller) {
$rootScope.foo = {
property: 'mock value'
};
$controller('myController', {$scope: $rootScope});
})));
于 2013-07-31T18:50:46.960 に答える
0
コントローラーとビュー (テンプレート) は、Angular アプリケーションでは 2 つの別個のものです。それらを結び付けるのは、スコープ(またはモデル) です。したがって、コントローラーをテストするために必要なのは、コントローラー関数に渡す偽のスコープだけです。
以下は、グローバル コントローラーを使用した非常に単純な例です (理解しやすくするために、運用コードではグローバル コントローラーを使用しないでください) と疑似テスト関数を使用します。
function MyCtrl($scope) {
$scope.bar = $scope.foo.property + 1;
}
function test() {
var scope = { foo: { property: 1 }};
MyCtrl(scope);
expect(scope.bar).toBe(2);
}
コントローラーがモジュール内で定義されている場合よりも少し複雑になりますが、それは別の話です。
于 2013-07-31T18:52:23.487 に答える