2016-07-08 18 views
1

私はAPIでテストの簡単なシーケンスをしようとしている:frisby.jsテストAPIの呼び出しを確実にする方法は、順番に行われますか?

  1. DELETE
  2. で削除 POST
  3. リクエストでユーザーリソースをGET
  4. を持つユーザーのリソースをユーザーリソースを作成します。

フリスビーテスト仕様ファイルmytest_spec.jsが1つあります。

f1 = frisby.create("Create"); 
    f1.post(post_url, {user_id: 1}); 
    f1.expectStatus(201); 
    f1.toss(); 

    // stuff... 

    f2 = frisby.create("Get"); 
    f2.get(get_url); 
    f2.expectStatus(200); 
    f2.toss(); 

    //Stuff... 

    f3 = frisby.create("delete"); 
    f3.get(delete_url); 
    f3.expectStatus(200); 
    f3.toss(); 

右かなり基本的なもの、私は3つの離散的なステップ、自分のtoss()等とのそれぞれにテストを分けました。しかし、彼らが非同期である限り、彼らが実行できる保証はありません。したがって、実行時にユーザーが存在しなければ、テスト2または3で404を取得する可能性があります。

誰かがFrisbyで順次テストを作成する正しい方法を知っていますか?

答えて

1

正確に指摘したとおり、Frisby.jsは非同期です。より同期的に実行するには、いくつかの方法があります。最も簡単なのはもっともクリーンなものですが.after(() -> ...after()については、Fisby.jsdocsです。

+0

はい、連鎖している非自明な流れは、「後で」は乱雑で速くなります。テストのために事前作業を強制的に実行するための他のオプションはありますか(実際にテストする必要はありませんが、テストのためにセットアップする必要があります)。これにより、After()の連鎖があまり長くならなくなります。 – Ray

+0

はい、テストのセットアップの場合 - 実行する前にアカウント登録が必要な 'scenario_spec.coffee'があるとしましょう。それで 'env.coffee'ファイルを準備して、あなたの登録を行います。最後に、 'scenario_spec.coffee'の最初に' env = require "./env"を初期化すると、あなたのケースの前にセットアップ(登録)が実行されることを確信しています。 – Slavo

関連する問題