5

私はJackをJavaScriptモックライブラリとして使用しています。http://github.com/keronsen/jack。私もqunitを使用しています。

テストを作成しようとしているJavaScriptコードで次のAJAX呼び出しがあります。

$.ajax({
    url: $('#advance_search_form').attr('action'),
    type: 'post',
    dataType: 'json',
    data: parameterizedData,
    success: function(json) {
        APP.actOnResult.successCallback(json);
    }
});

次のコードが機能しています。

jack(function() {
    jack.expect('$.ajax').exactly('1 time');
}

ただし、すべての引数が適切に送信されているかどうかをテストしたいと思います。フォローしてみましたがうまくいきませんでした。

jack.expect('$.ajax').exactly('1 time').whereArgument(0).is(function(){

varargs=引数; ok(' http:// localhost:3000 / users '、args.url、'urlは有効である必要があります'); //オブジェクトの多くのキーの類似性テスト});

一連のテストを実行できるように、引数を取得したいと思います。

4

1 に答える 1

4

2つのアプローチ:

.hasProperties()を使用します。

jack.expect('$.ajax').once()
    .whereArgument(0).hasProperties({
         'type': 'post',
         'url': 'http://localhost:3000/users'
    });

...または引数をキャプチャしてqunitアサーションを作成します。

var ajaxArgs;
jack.expect('$.ajax').once().mock(function() { ajaxArgs = arguments[0]; });
// ... the code that triggers .ajax()
equals('http://localhost:3000/users', ajaxArgs.url);

最初のバージョンは、より多くのJack API(より良いドキュメントに値する)を使用し、より読みやすいIMOです。

後者のバージョンでは、はるかに優れたエラー報告が得られます。

于 2010-02-16T19:42:57.580 に答える