До и после каждой утечки в другие тесты
Я использую grunt-contrib-jasmine
проверить мои модули AMD. Из коробки кажется, что тесты влияют друг на друга.
Вывод не разделяет тесты по файлам. Это можно проверить, зарегистрировав что-то в тестах beforeEach
, Один и тот же обратный вызов выполняется для всех тестовых файлов во всех тестах.
Как я могу сделать тесты изолированными друг от друга, то есть разделенными файлами тестовых спецификаций? Является ли единственным решением добавить еще один уровень вложенности?
грубый конфиг
options: {
specs: 'test/specs/unit/**/*spec.js',
keepRunner: true,
template: require('grunt-template-jasmine-requirejs'),
templateOptions: {
requireConfig: requireConfig
}
}
sample1.spec.js:
define(['Squire', 'sinon'], function(Squire, sinon){
'use strict';
var sut,
injector,
fakeServer;
beforeEach(function(done){
fakeServer = sinon.fakeServer.create();
console.log('create fake server'); // this is logged for all test files
injector = new Squire();
injector.require(['core/http-service'], function(httpService) {
sut = httpService;
done();
});
});
afterEach(function(){
fakeServer.restore();
injector.remove();
});
it('', function(){
expect(1).toBe(1);
});
});
1 ответ
Проблема в том, что у вас есть beforeEach
и afterEach
вне describe
, Это означает, что они будут вызываться до и после каждого теста, который grunt-contrib-jasmine
находит.
Если вы хотите, чтобы они использовались только для it
внутри вашего define
модуль, вы должны поместить их в describe
:
define(['Squire', 'sinon'], function(Squire, sinon){
'use strict';
describe('some description', function(){
var sut,
injector,
fakeServer;
beforeEach(function(done){
fakeServer = sinon.fakeServer.create();
console.log('create fake server'); // this is logged for all test files
injector = new Squire();
injector.require(['core/http-service'], function(httpService) {
sut = httpService;
done();
});
});
afterEach(function(){
fakeServer.restore();
injector.remove();
});
it('', function(){
expect(1).toBe(1);
});
});
});