1

$(document).ready(function()) 内に複数の関数と多くのコードがあります。jasmine を使用して、ready 関数内の関数と ready() 内のコードをテストしていますが、describe 内のテスト ケースが実行されると、ready function() 内のコードにアクセスできません。

$(document).ready(function()) 内に複数の関数と多くのコードがあります。jasmine を使用して、ready 関数内の関数と ready() 内のコードをテストしていますが、describe 内のテスト ケースが実行されると、ready function() 内のコードにアクセスできません。

$(document).ready(function () {
    function testMe(){
        testVar = true;
    }
});

Jasmine テスト スイート

describe("test suite", function(){
    beforeEach(function () {
        testme = false
    });
    it("Test Alert Box Message For Change Modal", function() {
        expect(testme).toEqual(true);
    });
});

上記のアプローチのためにどのようなアプローチを取る必要があるかを親切に提案してください。

4

1 に答える 1

1

コードが実行されたことをテストしていません。または、コードがどのように見えるかさえ。コードの動作をテストしています。

サンプル テストでは、2 つの問題があります。

  1. 変数ではなくexpect()の値をチェックしているため、未定義になるため常に失敗しますtestmetestVartestme
  2. 関数を定義します$(document).ready()が、実際に実行することはありません。したがって、正しい変数をチェックしていたとしても、呼び出していないため、値は変更されません。

Jasmine は、テストが実行される前にドキュメントを準備するので、この関数にラップされたコードに問題はありません。したがって、$(document).ready()関数のテストでは、データが適切に設定されていること、イベント ハンドラーが登録されていることなどを確認する必要があります。

jQueryon()関数をスパイして、正しいコールバックが渡されることを確認できます。スパイの呼び出し配列は呼び出しオブジェクトのコピーを取得し、それを検査して適切なセレクターが使用されていることを確認できます。コールバック自体は別のテスト ケースでテストされます。または、テスト ページに html フィクスチャをセットアップし、後のテスト ケースで自分でイベントを呼び出すこともできます。

関数に対する内部関数の存在はready()、テストの範囲外です。これらの内部機能を変更/削除し、テストを再実行して、機能に影響がないことを確認する機能が必要です。関数が関数の外で実行できない場合ready()、それは実装の詳細であり、気にする必要はありません。

于 2013-07-11T21:05:45.963 に答える