3
我需要一些帮助理解QUnit内部。 我不时读到它的源码,但是当谈到异步测试时,我还在写奇怪的测试。 我理解异步测试的概念,以及stop()和start()方法(以及为什么需要它们),但是当我将它们与setup和teardown结合使用时,我会遇到很多困难的情况。QUnit异步测试与安装和拆解
这里是我的Testcode:
use(['Psc.Exception','Psc.Code'], function() {
module("async", {
setup: function() {
console.log('setup');
}, teardown: function() {
console.log('teardown');
}
});
asyncTest("test1", function() {
expect(0);
console.log('test1');
start();
});
asyncTest("test2", function() {
expect(0);
console.log('test2');
start();
});
asyncTest("test3", function() {
expect(0);
console.log('test3');
start();
});
asyncTest("test4", function() {
expect(0);
console.log('test4');
start();
});
asyncTest("test5", function() {
expect(0);
console.log('test5');
start();
});
});
Allthough这些asynchron测试,我想我会得到这样的事情在控制台:
setup
test1
teardown
setup
test2
teardown
setup
test3
teardown
...
,因为我认为qunit会叫的安装和拆卸在测试身体周围?
但我把所有的事情混在一起,从请求到请求以另一种方式混洗。
setup
test1
teardown
setup
setup
setup
setup
test5
teardown
test4
teardown
test3
teardown
test2
teardown
有人能够一步一步解释吗?
没问题,所以我停止了解这个问题。我刚来到解决方案,如果这样从qunit调用这个设置函数是没用的。因为“全局”测试变量将始终被覆盖。所以我开始把我的设置功能包括进测试本身,这很好用 –
Max Cantor认为你可能在QUnit中发现了一个错误。你可以在GitHub上找到他的错误报告并解决这个问题:https://github.com/jquery/qunit/pull/320 –
用'asyncTest'函数设置/拆卸仍然有些bug。即使是“修复”。在我的测试中,它似乎更好,但它最终打嗝并连续进行多次调用。也许,如果我调试了qunit代码,我会更好地理解这个问题,但我觉得我不应该这样做。相反,正如@ P.scheit提到的那样,我认为我会在模块化设置/拆解中发现我的依赖关系。可能完全... –