小编Tre*_* A.的帖子

在使用带有RequireJS和Mocha的Squire.js时,如何避免引入全局泄漏?

我正在使用Backbone和Backbone.Marionette编写单页JavaScript应用程序.我使用AMD模块和RequireJS来帮助组织我的代码和管理依赖项.我也使用Mocha作为我的TDD/BDD测试框架.

一切都工作正常,直到我想使用Sinon.JS引入存根,模拟和间谍.经过大量的搜索,我在RequireJS wikiSquire.js中看到了一个关于测试框架的页面,看起来它很适合我的需求.但是,当我尝试使用Squire.js加载模块时,Mocha突然报告模块依赖关系的全局泄漏.如果我使用Require.JS直接加载模块,则不会报告泄漏.

例如,以下测试代码不会导致Mocha报告任何泄漏:

define(['app/app'], function(app) {
    describe('App', function() {
        it('Should define a \'header\' region', function() {
            expect(app.headerRegion).to.exist;
        });

        it('Should define a \'main\' region', function() {
            expect(app.mainRegion).to.exist;
        });
    });

    return {
        name: "App"
    };
});
Run Code Online (Sandbox Code Playgroud)

但是,将代码转换为使用Squire.js如下导致Mocha报告jQuery,Backbone和Marionette的泄漏(app.js的依赖关系):

define(['Squire'], function(Squire) {
    describe('App', function() {

        var testContext = {};

        beforeEach(function(done) {
            testContext.injector = new Squire();
            testContext.injector.require(['app/app'], function(app) {
                testContext.app = app;
                done();
            });
        });

        it('Should define a \'header\' region', function() {
            expect(testContext.app.headerRegion).to.exist;
        });

        it('Should define …
Run Code Online (Sandbox Code Playgroud)

javascript mocking mocha.js requirejs

7
推荐指数
1
解决办法
1604
查看次数

标签 统计

javascript ×1

mocha.js ×1

mocking ×1

requirejs ×1