3

多くの検索とかなりの試行の後、選択したツールの組み合わせにはそれがないように思えます。私は間違っているのが大好きです。

さて、技術スタックはタイトルの通りです。拡大するために、

  1. すべての「クラス」のバックボーン
  2. バックボーン エンティティ間の依存関係を読み込んで管理するための RequireJS
  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

何が機能しますか?

最初の同期テストは行います。

何がうまくいかないのですか?

2 番目の非同期テストは機能せず、タイムアウトします。

エラー

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:

ノート

ここから最新の QUnit アダプターをダウンロードしました。また、動作していると思われる他のアダプターも試してみましたが、役に立ちませんでした。

質問

これは可能ですか?もしそうなら、誰かがその問題に光を当ててくれますか?

ありがとうございました。

更新 (08.04.14) :

カルマ。それだけです。

4

1 に答える 1

2

非同期テストでは、単純なステートメントのセットを次々に実行して実行することは意味がありません。非同期テストは、主に、タイムアウトやajax呼び出しなど、テスト内で時間のかかるタスクが実行されているときにテストを停止および開始したくない場合に使用されます。これをエミュレートするために変更できます

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

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

これは魅力のように機能します!!!

于 2012-10-03T15:39:55.170 に答える