Javascript 在浏览器中动态定义摩卡规格
我需要能够在浏览器中执行mocha测试。不使用cli工具通过终端在浏览器中运行测试。从字面上说,浏览器中的所有内容。目标是在用户单击按钮后运行规范 我已经在浏览器中正确地设置了mocha,但是有一些缓存行为让我感到困惑 HTML:Javascript 在浏览器中动态定义摩卡规格,javascript,mocha.js,Javascript,Mocha.js,我需要能够在浏览器中执行mocha测试。不使用cli工具通过终端在浏览器中运行测试。从字面上说,浏览器中的所有内容。目标是在用户单击按钮后运行规范 我已经在浏览器中正确地设置了mocha,但是有一些缓存行为让我感到困惑 HTML: <div id="mocha"></div> <button id="test">run test</button> (function(init, $, runner) { init(); $('#
<div id="mocha"></div>
<button id="test">run test</button>
(function(init, $, runner) {
init();
$('#test').addEventListener('click', runner)
})(
function init() {
mocha.setup('bdd');
},
function $(sel) {
return document.querySelector(sel);
},
function specRunner(e) {
describe('test at ' + new Date().getTime(), function() {
it('should add 1 + 1', function() {
chai.assert(1 + 1 === 2, 'added 1 + 1');
});
});
mocha.run();
}
)
我使用过的其他测试工具(qunit、jasmine、karma、Digrator)都鼓励(force?)用户在跑步者开始之前定义他们的所有规格。这与我试图实现的相反:以编程方式定义规范,而不是在运行时
在plnkr中,似乎摩卡正在缓存以前的规范,然后在每次单击时运行所有规范。我怎样才能避免这种行为?我认为这是你所期望的:
(function(init, $, runner) {
init();
$('#test').addEventListener('click', runner)
})(
function init() {
mocha.setup('bdd');
describe('test at ' + new Date().getTime(), function() {
it('should add 1 + 1', function() {
chai.assert(1 + 1 === 2, 'added 1 + 1');
});
});
},
function $(sel) {
return document.querySelector(sel);
},
function specRunner(e) {
mocha.run();
}
)
问题是每次单击按钮时都定义了测试,但只需要定义一次,并且只在运行程序中运行
希望这对你有所帮助我想这是你所期待的:
(function(init, $, runner) {
init();
$('#test').addEventListener('click', runner)
})(
function init() {
mocha.setup('bdd');
describe('test at ' + new Date().getTime(), function() {
it('should add 1 + 1', function() {
chai.assert(1 + 1 === 2, 'added 1 + 1');
});
});
},
function $(sel) {
return document.querySelector(sel);
},
function specRunner(e) {
mocha.run();
}
)
问题是每次单击按钮时都定义了测试,但只需要定义一次,并且只在运行程序中运行
希望这对您有所帮助为什么您需要在您的站点中执行测试?因为这是一个奇怪的古怪边缘案例,根本不喜欢使用webdriver。最终目标是在chrome扩展中添加一个“spec runner”。我只是不想推出我自己的测试库。我不知道你的确切情况,但我真的不想让你做这样的事情。尽管如此,我还是发布了一个答案(我认为)解决了你的问题。为什么你需要在你的网站上执行测试?因为这是一个奇怪的边缘案例,使用webdriver根本不是首选。最终目标是在chrome扩展中添加一个“spec runner”。我只是不想推出我自己的测试库。我不知道你的确切情况,但我真的不想让你做这样的事情。尽管如此,我还是发布了一个答案(我认为)解决了你的问题。