Сценарий
В настоящее время я пишу тесты для углового проекта, и почти на каждую статью я нахожу, я вижу их создание «глобальной» переменные в 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, поскольку он создает и разделяет новый экземпляр сервис/завод/и т.д .. для тестов использовать. НО при написании большого количества тестов я заметил, что я создаю глобальные переменные, а затем больше не использую их, и забываю удалить их в 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
блока?