これは、私が尋ねた別の質問の続きで、うまく答えられました。
Karma、Jasmine、および ngMock を使用して AngularJS アプリケーションを単体テストする方法を学んでいます。質問があるコードは次のとおりです。
describe('myController function', function() {
describe('myController', function() {
var scope;
beforeEach(module('myApp'));
beforeEach(inject(function($rootScope, $controller) {
// These are the 2 lines I'm a bit confused about:
scope = $rootScope.$new();
$controller('MyController', {$scope: scope});
}));
it("...");
});
});
質問 1:scope新規を作成して、この行の locals インジェクション エリアに含めるのはなぜ$controller('MyController', {$scope: scope});ですか? それは問題なく動作しているように見えます (scope現在、そのコントローラーのオブジェクトを表し、$scope想定されているすべてのプロパティと機能を備えています) が、コードは、コントローラー$scopeを新しく作成した (そして空の) scope(行からscope = $rootScope.$new();)。ですから、私はそれらの地元の人々の目的/内部の仕組みを完全に理解していないと思います.
質問 2:検索の結果、 newscopeが 2 つの一般的な方法で作成される$rootScope.$new()こともわかりscope = {}ました。Angular のドキュメントでさえ、ここ (を使用) とここ (を使用) に見られるように、両方の方法でそれを行っています。なぜ$rootScope.$new()これを別$scope = {}の方法で行うのですか?違いはありますか?