シナリオ
私は現在、Angular プロジェクトのテストを書いています。私が見つけたほぼすべての記事で、次のように、テストで使用される依存関係を格納するブロックに「グローバル」変数を作成しているのを目にします。describe
describe('Some tests', function() {
var $controller, $rootScope
beforeEach(angular.mock.module('myApp'))
beforeEach(angular.mock.inject(function(_$controller_, _$rootScope_) {
$controller = _$controller_
$rootScope = _$rootScope_
}))
it('uses $controller inside', function() {
// ...
})
it('uses $rootScope inside', function() {
// ...
})
})
テストで使用するために、サービス/ファクトリ/などの新しいインスタンスを作成して共有するため、これは非常に乾燥していることがわかりました。しかし、多くのテストを書いているとき、私はグローバルを作成し、その後それらを使用しなくなり、inject()このトレースを残す際にグローバルを削除するのを忘れていることに気づきました。これは、後で混乱を引き起こす可能性があります。
私の混乱
そのため、各テスト ケースに依存関係を注入してから、次のように小さなdescribeブロックを手に負えないグローバルにリファクタリングしました。
describe('Some tests', function() {
beforeEach(angular.mock.module('myApp'))
it('uses $controller inside', angular.mock.inject(function($controller) {
// Test using the $controller
}))
it('uses $rootScope inside', angular.mock.inject(function($rootScope) {
// Test using $rootScope
}))
})
そして、これには、物事がローカルにとどまり、どこから来たのかを検索する必要がある変数を使用する必要がないという追加の利点があります。
質問
beforeEachブロック内ではなく、テストごとに依存関係を注入することに問題はありますか?