0

だからここに取り引きがあります:私はiframemypage.htmlにシングルを持っています。jQuery を使用してhttp://mysite.com/rest/foo(公開された REST サービス) を調べ、URL を含む XML 応答を取得します。iframe のsrc属性をその URL に設定します。

問題は、これをどのように単体テストするか ( QUnitSinon.jsを使用) です。私は単体テスト全般に非常に慣れていないので、経験豊富な意見や例を聞きたいです。

script.js:

$(document).ready(function() {

    function setUrl(url) 
    {
        $('iframe').attr('src', url);
    }

    function throwError() 
    {
        // Error handling
    }   

    function myCallback(response) 
    {
        var url = $(response).find("url");

        if (!url.text()) throwError();
        else setUrl(url.text());
    }

    function bar(restLocation, callback) 
    {       
        $.get("http://mysite.com/rest/" + restLocation, callback);
    }

    bar("foo", myCallback);
});

特に、以下の点が気になります。

  1. これらの関数をテストするには、すべての関数をグローバル名前空間に公開する必要があると思います。これは絶対に必要ですか、document.ready()それとも機能中にそれらをテストする方法はありますか?

  2. どの関数をテストする必要がありますか? bar()実際に行うことは 1 つだけです: /rest/foo/ への AJAX 呼び出しを作成してから を呼び出しますmyCallbackが、他のメソッドはヘルパー メソッドです (これを Java または C# で記述している場合、それらはおそらくプライベートになります)...それらをテストする必要がありますそれも?エンド ユーザー (mypage.html を表示しているユーザー) は、技術的には、どの REST アドレスを指すかを選択することさえできません。

  3. 適切なテストケースがいくつかあると思います

    • 有効な restLocation が に渡されるbar()場合、iframe src を設定する必要があります。
    • 無効な restLocation が渡された場合、エラーを処理する必要があります (404 などをロードする形式で)
    • サーバーがダウンしている場合は、エラーを処理します。
    • 他に何か?

残念ながら、 を実行しようとすると$('iframe').attr('src')、 が返されますundefined。を使用しようとするとprop()、空の文字列が得られます。srcが正しく設定されているかどうかを確認するにはどうすればよいですか?

長い質問で申し訳ありません。どのような種類のテストが「良い」単体テストになるのか、この状況でどのようにテストするのかについて、私はかなり混乱しています。

4

1 に答える 1