0

手動で作成できない戻り値 (値) を返す関数をチェックする必要がある場合、単体テストでこの奇妙な状況が発生します。実際、この関数はこの値を作成するために作成されています。したがって、次のようにテストします (javascript および QUnit フレームワーク):

asyncTest("UTF-8 - ArrayBuffer conversion", 1, function() {
    var arrayBuffer;
    var testUtf8 = "łużyński";
    var blob = new Blob([testUtf8]);
    var f = new FileReader();
    f.onload = function(e) {
        arrayBuffer = e.target.result;
        start();
    };
    equal(utf8ToArrayBuffer(testUtf8), arrayBuffer, "UTF-8 to ArrayBuffer, OK!");
});

戻り値と比較するために arrayBuffer 変数を準備することは、実際には を使用することと同じであるため、冗長ですutf8ToArrayBuffer(testUtf8)。したがって、テストは次のようになります。

equal(utf8ToArrayBuffer(testUtf8), utf8ToArrayBuffer(testUtf8), "UTF-8 to ArrayBuffer, OK!");

このようなことをテストするべきですか、それともそのままにしておくべきですか? それとも、これに対する別のアプローチがありますか?

4

1 に答える 1

0

2 つの同等の関数呼び出しが同じものを返すことをテストしないでください。関数呼び出しの結果が期待どおりであることをテストする必要があります。あなたの場合、これは"łużyński"入力として値 ( ) があり、出力として配列バッファーを取得することを意味します。入力値が実際に出力に含まれているかどうかをテストできます。

しかし、テストする関数のコード ( utf8ToArrayBuffer()) がなければ、正確に何をテストできるかを言うのは困難です。

于 2013-02-15T17:13:10.830 に答える