經過大量的搜索和相當多的試用,在我看來, 工具的選擇組合並沒有它。我很想去誤會。使用JsTestDriver + RequireJS + QUnit測試
那麼,技術堆棧正如標題中所述。要擴大,
- 骨幹,爲所有 「類」
- RequireJS加載和骨幹實體之間的管理依賴性
- QUnit(其中測試也RequireJS模塊)
- 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
試驗運行命令(來自同一目錄JST d JAR是)
java -jar JsTestDriver-1.3.4.b.jar --runnerMode PROFILE --reset --dryRunFor all --tests all
什麼工作?
第一個同步測試呢。
什麼不行?
第二個異步測試不起作用並超時。
錯誤
鉻控制檯
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適配器。我也嘗試了一些其他的,據說工作,適配器無濟於事。
問題
這甚至可能嗎?如果是這樣,那麼有人會如此善待澄清這個問題?
謝謝。
UPDATE(14年4月8日):
Karma。就這些。
自從您發佈此問題已經有一段時間了 - Dilip的建議是否解決了您的問題,或者您是否提出了其他問題?只是好奇,我處於類似的情況。 – mrk
沒有。沒有運氣。 然而,在我的另一個項目中,我決定使用Grunt和Phantom.JS進行QUnits,到目前爲止工作正常。 – ZenMaster