1

そのため、DOM で ngModel として指定されたプロパティを参照しているコントローラーをテストしています。しかし、コントローラーをテストしている間、テンプレートがありません。したがって、$scope.foo.property がコントローラーでアクセスされるたびに、エラーがスローされます。

4

2 に答える 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 に答える