Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
26
Help us understand the problem. What is going on with this article?
@sassy_watson

Jasmineの非同期テストが1.3から2.0で変わった

More than 5 years have passed since last update.

jasmineの1.3までは、非同期のテストをするのには、下記のようにしていました。

    describe("Async test",  function() {
        it ("async execution of test", function() {
            var flag = false;
            //非同期のメソッドをここで呼ぶ
            runs(function() {
                setTimeout(function() {
                    flag = true;
                }, 500);
            });

            //trueを返すか、タイムアウトするか待つ
            waitsFor(function() {
                return flag;
            }, "change flag", 600);

            //waitsForの結果を待つ
            runs(function() {
                expect(flag).toBe(true);
            });
        });
    });

最初のrunsで非同期の処理を開始します。
で、waitsForは非同期の処理が終わるかタイムアウトするか待ちます。
waitsForがtrueを返したら最後のrunsが呼ばれて結果を確認します。

しかし、2.0では、このrunsとwaitsForメソッドが定義されていません。
よって、2.0では上記のテストはそのまま使えないので書き直す必要があります。
以下は、2.0向けに書き直したものです。

    describe("Async test",  function() {
        var flag = false;
        beforeEach(function(done) {
            setTimeout(function() {
                flag = true;
                done();
            }, 500);
        });

        it ("async execution of test", function(done) {
            expect(flag).toBe(true);
            done();
        });
    });

beforeEach内で非同期処理を行います。
waitsForがなくなった代わりに、beforeEachに渡す関数の引数にdoneというオプショナルな引数があるので、
非同期処理が終わったらこの done を呼び出して上げます。
そうすると、itの処理が開始され、結果を評価します。
ここのitに渡す関数の引数にdoneを渡しましたが、
これはoptionalなので、渡さなくてもいいです。(一応渡せるということだけを書きたかっただけです。)

26
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
sassy_watson
Androidアプリやフロントエンドのエンジニア。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
26
Help us understand the problem. What is going on with this article?