【发布时间】:2012-06-14 15:34:30
【问题描述】:
我需要一点帮助来理解 QUnit 内部。 我不时阅读它的源代码,但是当涉及到异步测试时,我仍在编写奇怪的测试。 我了解异步测试的概念,以及 stop() 和 start() 方法(以及为什么需要它们),但是当我将它们与 setup 和 teardown 结合起来时,我会遇到很多奇怪的情况。
这是我的测试代码:
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();
});
});
虽然这些都是异步测试,但我想我会在控制台中得到类似的东西:
setup
test1
teardown
setup
test2
teardown
setup
test3
teardown
...
因为我认为 qunit 会在测试主体周围调用 setup 和 teardown?
但我把一切都搞混了,从请求到请求以另一种方式打乱了。
setup
test1
teardown
setup
setup
setup
setup
test5
teardown
test4
teardown
test3
teardown
test2
teardown
有人能一步一步解释吗?
【问题讨论】:
-
好的,所以我不再试图理解这个问题。我刚刚得出的解决方案是,如果以这种方式从 qunit 调用 setup 函数,它将无用。因为“全局”测试变量将始终被覆盖。所以我开始将我的设置功能包含到测试本身中,效果非常好
-
Max Cantor 相信您可能在 QUnit 中发现了一个错误。你可以在 GitHub 上找到他的错误报告和修复:github.com/jquery/qunit/pull/320
-
asyncTest函数的设置/拆卸仍有一些问题;即使有“修复”。在我的测试中,它似乎更好,但它最终会打嗝并连续多次调用 setup 。也许,如果我调试了 qunit 代码,我会更好地理解这个问题,但我只是觉得我不应该这样做。相反,正如@P.scheit 所提到的,我认为我将依赖模块化设置/拆卸。可能完全是 QUnit...
标签: asynchronous installation qunit teardown