gpt4 book ai didi

javascript - before- 和 afterEach 泄漏到其他测试

转载 作者:行者123 更新时间:2023-11-29 10:33:59 24 4
gpt4 key购买 nike

我正在使用 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 模块中的 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);
});
});
});

关于javascript - before- 和 afterEach 泄漏到其他测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39829395/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com