2016-08-04 6 views
2

Сценарий

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

ответ

1

Нет такой проблемы, вы можете добавить зависимости в соответствии с вашим требованием, единственная проблема возникает при эффективности, потому что она должна загружать один и тот же файл несколько раз. Эта проблема не является большой проблемой при написании небольшого количества тестовых примеров, но когда вы начинаете писать больше тестовых примеров, это в конечном итоге замедлит работу. Кроме того, модуль, который вы вводите каждый раз, может зависеть от других модулей, поэтому эти модули должны быть загружены в память. Именно поэтому эти значения следует использовать в качестве глобальных переменных.

 Смежные вопросы

  • Нет связанных вопросов^_^