シナリオ
私は現在、角度のプロジェクトのためのテストを書いている、と彼らはで使用される依存関係を保管場所にはほとんど私が見つけるすべての記事に、私は、彼らがdescribe
ブロックに「グローバル」変数の作成を参照してください。このようなテスト、:Angularjs ngMockは、各テストの前に、または各テストケースに注入しますか?
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() {
// ...
})
})
それは、使用するテストのために...サービス/工場/などの新しいインスタンスを作成し、共有するので、私はこれはDRYのverであることがわかってきました。しかし、たくさんのテストを書くときには、グローバルを作成して使用しなくなったことに気付きました。そして、このトレースを残して、それらを削除して、ラインを混乱させる可能性があります。
は、だから私は、各テストケースの依存関係を注入してきたし、このように、手に負えませんグローバルに小さな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
ブロックテストごとの代わりに、内部の依存関係を注入する上の任意の問題がありますか?