Unit testing 在浏览器中有选择地运行Mocha测试
我想有选择地在浏览器中运行mocha测试,即使在多个带有测试的文件都加载了requirejs之后。现在,如果我用requirejs加载user\u model\u测试和user\u view\u测试,那么每次调用mocha.run之后,所有这些测试都会运行 最终目标是根据表单上的用户复选框有选择地运行测试,并且只有这些测试显示在浏览器中。现在,这是第一次有选择地加载和运行测试,但是一旦加载了测试,即使用户取消选中复选框,测试仍然会运行,因为之前的测试是必需的 摩卡框架内是否有解决方案?还是我必须以某种方式转储requirejs的缓存Unit testing 在浏览器中有选择地运行Mocha测试,unit-testing,requirejs,mocha.js,Unit Testing,Requirejs,Mocha.js,我想有选择地在浏览器中运行mocha测试,即使在多个带有测试的文件都加载了requirejs之后。现在,如果我用requirejs加载user\u model\u测试和user\u view\u测试,那么每次调用mocha.run之后,所有这些测试都会运行 最终目标是根据表单上的用户复选框有选择地运行测试,并且只有这些测试显示在浏览器中。现在,这是第一次有选择地加载和运行测试,但是一旦加载了测试,即使用户取消选中复选框,测试仍然会运行,因为之前的测试是必需的 摩卡框架内是否有解决方案?还是我必须
var TestRunner = {
start: function(tests) {
require(tests, function(require) { mocha.run() });
},
formListener: function() {
$('form.test-selector').submit(function(event) {
event.preventDefault();
var choices = $('form.test-selector input.test-choice');
var selections = []
_.forEach(choices, function(choice) {
if ($(choice).is(':checked')) {
selections.push($(choice).val());
}
})
TestRunner.start(selections);
})
}
};
$(document).ready(function() {
TestRunner.formListener();
})
当同时使用requirejs和摩卡咖啡时: Mocha将运行requirejs在上下文中加载的任何测试 诀窍是每次运行测试后,使用require.unde从上下文中删除测试。一旦这样做了,您就可以在下次运行您想要的任何测试了
start: function(tests) {
$('#mocha').html('');
require(tests.concat('vendor/mocha'), function() {
var mocha = _(arguments).last();
mocha.setup('bdd');
var expect = chai.expect
chai.use(chaijquery);
mocha.run();
});
require.undef('vendor/mocha')
tests.forEach(function(test) {
require.undef(test);
})
},
请注意最后4行,它们从上下文中删除了测试文件