Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/430.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何卸下主干木偶模块?_Javascript_Backbone.js_Tdd_Marionette - Fatal编程技术网

Javascript 如何卸下主干木偶模块?

Javascript 如何卸下主干木偶模块?,javascript,backbone.js,tdd,marionette,Javascript,Backbone.js,Tdd,Marionette,我正在测试我的主干木偶模块。在每次测试之前,我想在应用程序上设置一个模块,并在拆卸过程中完全删除它 我只发现了如何停止一个模块,但这还不够,它不会删除事件侦听器、应用程序上的模块对象等。除了在存在更多测试用例时再次调用模块定义外,它不会创建新模块,只会将其应用于现有模块 var application = new Backbone.Marionette.Application(); beforeEach(function() { application.module('MyModule

我正在测试我的主干木偶模块。在每次测试之前,我想在应用程序上设置一个模块,并在拆卸过程中完全删除它

我只发现了如何停止一个模块,但这还不够,它不会删除事件侦听器、应用程序上的模块对象等。除了在存在更多测试用例时再次调用模块定义外,它不会创建新模块,只会将其应用于现有模块

var application = new Backbone.Marionette.Application();

beforeEach(function() {
    application.module('MyModule', function() {
        // module definition goes here
    })
});

afterEach(function() {
    // i want something like this
    application.remove(MyModule)
});

MyModuleYou可以在每个方法之前和之后定义它,并在启用时启动和停止

var application = new Backbone.Marionette.Application();

application.module('MyModule', function() {
    // module definition goes here
})

beforeEach(function() {
   application .module('MyModule').start();
});

afterEach(function() {
 application .module('MyModule').stop();
});

他不想只停止一个模块,而是完全删除它。这样,如果不是所有事件处理程序都被删除,测试可能会相互依赖。测试不应该相互依赖。我认为您应该向finalize模块事件添加代码以进行清理,您的模块应该能够启动和停止。但问题是,访问应用程序并将其从Itan和事件侦听器中删除?在删除之前,它只删除objectcall模块.stop()。
// assume you know the name of the module
delete application['MyModule'];

// otherwise
var module = application.module('awesomeModule', function(){});
delete application[module.moduleName];