从start()开始,在Qunit 2.0中将删除stop(),通过beforeEach,afterEach方法,异步设置和拆卸的替代方法是什么?例如,如果我希望beforeEach等待承诺完成?
答案 0 :(得分:7)
QUnit基本上希望人们停止使用global methods(不只是start()
和stop()
,还有test()
,expect()
等。因此,从版本1.16.0开始,您应始终使用传递到QUnit
函数的全局命名空间(assert
)或test()
API参数。这包括新的async control:
QUnit.test( "testing async action", function( assert ) { // <-- note the `assert` argument here
var done = assert.async(); // tell QUnit we're doing async actions and
// hold onto the function it returns for later
setTimeout(function() { // do some async stuff
assert.ok( true, "This happened 100 ms later!" );
done(); // using the function returned from `assert.async()` we
// tell QUnit we're don with async actions
}, 100);
});
如果您熟悉旧的start()
和stop()
做事方式,您应该会发现这非常相似,但更加分散和可扩展。
因为 async()
方法调用在测试的assert
参数上,所以它不能在beforeEach()
函数中使用。如果你有一个如何做到这一点的例子,请发布它,我们可以尝试找出如何以新的方式进行git。
<强>更新强>
我之前的错误是,assert
对象被传递到模块上的beforeEach
和afterEach
回调中,因此您应该能够执行与之相同的逻辑操作测试:
QUnit.module('set of tests', {
beforeEach: function(assert) {
var done = assert.async();
doSomethingAsync(function() {
done(); // tell QUnit you're good to go.
});
}
});
(在QUnit 1.17.1中测试)
答案 1 :(得分:0)
看到没有人回答beforeEach / afterEach部分:测试套件应该在页面加载后立即运行。如果无法立即实现,则可以使用配置QUnit:
QUnit.config.autostart = false;
继续设置测试套件(初始化测试,将它们提供给QUnit,异步等待加载某些组件,无论是AJAX还是其他任何东西),您的站点,最后,当它准备就绪时,运行:< / p>
QUnit.start();
QUnit's docsite已经涵盖了它。
答案 2 :(得分:0)
Ember Qunit,曾经存在beforeEach
/ setup
,afterEach
/ teardown
并存一段时间。