before- 和 afterEach 泄漏到其他测试
before- and afterEach leaking in to other tests
我正在使用 grunt-contrib-jasmine
来测试我的 AMD 模块。开箱即用,测试似乎相互影响。
输出不按文件分隔测试。这可以通过在测试 beforeEach
中记录一些内容来验证。在所有测试中,对所有测试文件执行相同的回调。
如何使测试彼此隔离,即通过测试规范文件分隔?添加另一层嵌套是唯一的解决方案吗?
grunt 配置
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);
});
});
问题是您在 describe
之外有一个 beforeEach
和一个 afterEach
。这意味着它们将在 grunt-contrib-jasmine
找到的每个测试之前和之后被调用。
如果您希望它们仅用于 define
-ed 模块中的 it
,您需要将它们放在 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);
});
});
});
我正在使用 grunt-contrib-jasmine
来测试我的 AMD 模块。开箱即用,测试似乎相互影响。
输出不按文件分隔测试。这可以通过在测试 beforeEach
中记录一些内容来验证。在所有测试中,对所有测试文件执行相同的回调。
如何使测试彼此隔离,即通过测试规范文件分隔?添加另一层嵌套是唯一的解决方案吗?
grunt 配置
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);
});
});
问题是您在 describe
之外有一个 beforeEach
和一个 afterEach
。这意味着它们将在 grunt-contrib-jasmine
找到的每个测试之前和之后被调用。
如果您希望它们仅用于 define
-ed 模块中的 it
,您需要将它们放在 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);
});
});
});