Javascript 每次泄漏到其他测试之前和之后

Javascript 每次泄漏到其他测试之前和之后,javascript,jasmine,grunt-contrib-jasmine,Javascript,Jasmine,Grunt Contrib Jasmine,我正在使用grunt contrib jasmine来测试我的AMD模块。开箱即用的测试似乎相互影响 输出不按文件分隔测试。这可以通过在每次测试之前在测试中记录一些内容来验证。在所有测试中,对所有测试文件执行相同的回调 如何使测试彼此隔离,即由测试规范文件分隔?是添加另一层嵌套的唯一解决方案吗 咕噜声配置 options: { specs: 'test/specs/unit/**/*spec.js', keepRunner: true, template: require

我正在使用grunt contrib jasmine来测试我的AMD模块。开箱即用的测试似乎相互影响

输出不按文件分隔测试。这可以通过在每次测试之前在测试
中记录一些内容来验证。在所有测试中,对所有测试文件执行相同的回调

如何使测试彼此隔离,即由测试规范文件分隔?是添加另一层嵌套的唯一解决方案吗

咕噜声配置

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);
    });
});

问题是在
描述
之外,在每个
之前都有一个
,在每个
之后都有一个
。这意味着它们将在
grunt contrib jasmine
找到的每个测试之前和之后被调用

如果希望它们仅用于
define
-ed模块中的
it
,则需要将它们放在
description
中:

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);
        });
    });
});

除了这里展示的示例之外,您还嵌套了其他测试吗?有几个
x.spec.js
测试文件具有1-2个级别的
descripe()
。我真的需要让我的所有测试都在同一个规范中才能让这个插件工作吗?也许你在一个包含嵌套的
descripe
的descripe中使用了
beforeach
afterEach
,希望它们只影响内部
descripe
?可能很明显,但值得一看。我的最后一个想法是,问题一定是来自模板,因为其他一切看起来都很好,在检查了
grunt contrib jasmine
@FaustoNA的文档后,我无法找出其他任何东西。是的,可能是因为模板“扁平”。我会挖得更深。谢谢,就像我当时想的那样。我只是好奇,有没有一种方法可以告诉插件按名称将它们分开,而不需要嵌套。谢谢你的核实。顺便说一句,你在接下来的23个小时内无法获得赏金:)