gpt4 book ai didi

requirejs - 使用 JsTestDriver + RequireJS + QUnit 进行测试

转载 作者:行者123 更新时间:2023-12-02 22:49:31 25 4
gpt4 key购买 nike

经过大量搜索和相当多的试验,在我看来,所选择的组合工具只是没有它。我很乐意被误会。

嗯,技术栈如标题所说。要扩展,

  1. 所有“类”的 Backbone
  2. RequireJS 加载和管理 Backbone 实体之间的依赖关系
  3. QUnit(其中测试也是 RequireJS 模块)
  4. 用于命令行自动化的 JsTestDriver

设置和代码片段

jsTestDriver.conf

server: http://localhost:48080
basepath: path/to/JSTestDriver/
load:
- lib/qunit/qunit-1.10.0.js
- lib/qunit/equiv.js
- lib/qunit/QUnitAdapter.js
- lib/requirejs/require.js
test:
- test/tests.js
serve:
- lib/jquery/jquery-1.7.1.js
- test/components/ComponentOneTest.js

tests.js

require({  
baseUrl : '/test',
shim : {
'fixture.object' : ['jquery'],
'fixture.string' : ['jquery'],
'fixture.dom' : ['jquery', 'fixture.string'],
'fixtures' : ['fixture.object', 'fixture.string', 'fixture.dom'],
'equiv' : ['qunit'],
'qunit.adapter' : ['qunit', 'equiv']
},
paths: {
'text' : 'lib/requirejs/text',
'jquery' : 'lib/jquery/jquery-1.7.1',
'backbone' : 'lib/backbone/amd/backbone',
'underscore' : 'lib/underscore/amd/underscore',
'fixture.dom' : 'lib/fixture/jquery.dom.fixture',
'fixture.string' : 'lib/fixture/jquery.lang.string',
'fixture.object' : 'lib/fixture/jquery.lang.object',
'fixtures' : 'fixture/fixtures',
'qunit' : 'lib/qunit/qunit-1.10.0',
'equiv' : 'lib/qunit/equiv',
'qunit.adapter' : 'lib/qunit/QUnitAdapter'
}
}, [], function() {
module('Module 1', {});

test('test 1', 1, function() {
ok(true, 'passed');
});

asyncTest('test 2', 1, function() {
start();
ok(true, 'passed');

});
});

服务器启动命令(来自 JSTD JAR 所在的同一目录)

java -jar JsTestDriver-1.3.4.b.jar --port 48080

测试运行命令(来自 JSTD JAR 所在的同一目录)

java -jar JsTestDriver-1.3.4.b.jar --runnerMode PROFILE --reset --dryRunFor all --tests all

什么有效?

第一个同步测试成功。

什么不起作用?

第二个异步测试不起作用并超时。

错误

Chrome 控制台

Uncaught TypeError: Cannot read property 'all' of undefined qunit-1.10.0.js:1102
done qunit-1.10.0.js:1102
process qunit-1.10.0.js:1285
(anonymous function) qunit-1.10.0.js:383

控制台

setting runnermode PROFILE
Chrome: Reset
Chrome: Reset
Chrome 22.0.1229.64: 1 tests [
Module 1 (/test/test/tests.js)
test test 1
test test 2]
.F
Total 2 tests (Passed: 1; Fails: 1; Errors: 0) (30025.00 ms)
Chrome 22.0.1229.64 Windows: Run 2 tests (Passed: 1; Fails: 1; Errors 0) (30025.00 ms)
Module 1.test test 2 failed (30023.00 ms): Error: Callback '#1' expired after 30000 ms during test step 'start()'
Error: Callback '#1' expired after 30000 ms during test step 'start()'

Sep 23, 2012 8:36:44 PM com.google.jstestdriver.ActionRunner runActions
INFO:

注释

我确实从 here 下载了最新的 QUnit 适配器。我还尝试了其他一些据说可以工作的适配器,但都无济于事。

问题

这可能吗?如果是这样,有人会好心地解释一下这个问题吗?

谢谢。

更新(2014 年 4 月 8 日):

Karma 。仅此而已。

最佳答案

在异步测试中,将一组简单的语句一个接一个地执行是没有意义的。异步测试主要用于在测试中执行耗时任务(例如超时或 ajax 调用)时我们不想停止和启动测试的情况。为了模拟这一点,我们可以改变

asyncTest('test 2', 1, function() {
start();
ok(true, 'passed');
});

asyncTest('test 2', 1, function() {        
setTimeout(function(){
ok(true, 'passed');
start();
},2000);
});

这将像魅力一样发挥作用!!!

关于requirejs - 使用 JsTestDriver + RequireJS + QUnit 进行测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12555182/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com