是否有延迟QUnit测试套件启动的方法?
我正在尝试解决单元测试问题。是否有延迟QUnit测试套件启动的方法?
我曾经有一个主要工作的Maven - > PhantomJS - > Qunit设置,但它是不可预知的,所以我把它分开试图修复它。
我升级的软件:
Qunit: 1.11.0
PhantomJS: 1.8
Phantom Qunit Runner Latest: https://github.com/jquery/qunit/tree/master/addons/phantomjs
我看到Web GUI工作。它运行并通过了所有102个测试。控制台输出:
$ phantomjs --disk-cache=false runner.js http://localhost/ui/dcx/test.html
$ Took 16ms to run 0 tests. 0 passed, 0 failed.
如果我在runner中注释掉exit命令,它会多次打印QUnit.done的控制台输出。
$ phantomjs --disk-cache=false runner.js http://localhost/ui/dcx/test.html
$ PhantomJS successfully loaded a page
$ QUnit.done callback fired
$ Took 15ms to run 0 tests. 0 passed, 0 failed.
$ QUnit.done callback fired
$ Took 1840ms to run 102 tests. 102 passed, 0 failed.
$ QUnit.done callback fired
$ Took 1841ms to run 102 tests. 102 passed, 0 failed.
$ QUnit.done callback fired
$ Took 1842ms to run 102 tests. 102 passed, 0 failed.
$ QUnit.done callback fired
$ Took 1848ms to run 102 tests. 102 passed, 0 failed.
$ ^C
$
在我看来,Qunit.done回调得到执行太快,然后多次。
任何人都知道为什么这个回调触发?
我的测试包含和登录延迟可能是相关的。我使用AMD模块定义测试和curl.js带给他们什么也没有发生,直到安全登录呢:
curl(['dolla'], function($){
$.ajax({
type: 'POST',
url: '/svc/j_spring_security_check',
data: {
j_username: '7',
j_password: '7'
},
success: function() {
loadTests()
}
});
})
var loadTests = function() {
curl([
// Unit tests
'dcx/dataControls/activity.test'
, 'dcx/dataControls/eventList.test'
, 'dcx/dataControls/mapViewer.view.test'
, 'dcx/pages/deviceDetails.view.test'
, 'dcx/pages/login.test'
, 'dcx/pages/nodeProfiles.test'
, 'dcx/pages/settings.view.test'
], function() {}, function(ex) { throw new Error(ex) })
})
编辑: 我下来了病根,我想。 如果您在空白页面中包含QUnit,它会立即调用QUnit.begin和QUnit.done。 我需要延迟执行Qunit,直到安全登录成功并且curl引入我的单元测试之后。有没有办法延迟QUnit的启动,但仍然保持Qunit对象可用?我不能使用stop(),因为有很多异步测试会调用start()。
找到了答案。您可以将QUnit配置为不启动,然后在加载所有测试时手动启动它。这可以防止重复调用Qunit.done,这是造成此问题的根本原因。
http://forum.jquery.com/topic/are-qunit-and-requirejs-compatible#14737000001967123
这是一种方法 - 修改跑步者在没有测试结果时不会退出。 https://gist.github.com/SimpleAsCouldBe/5059623
虽然这不起作用,但Qunit.done在测试堆栈被清除时触发。在像Curl/Require.js这样的异步加载环境中,这可能随时发生。
您应该将此答案标记为正确。 – TMB 2013-06-10 19:52:54