1

Ruby on Rails を使用してモバイル アプリケーション用の JSON API を構築しています。私は次のように機能するランダムゲーム関数を持っています:

  1. プレーヤー 1 がランダム ゲームを要求します。
  2. プレーヤー 2 がランダム ゲームを要求します。
  3. プレーヤーがペアを作るので、ゲームが開始されます。

これは /games/random_game.json 呼び出しによって行われます。

rspec テストは次のようになります。

it "should start a random game" do
    post "/api/v1/games/random_game.json", 
      :token => player1.authentication_token,
      :game_type => "tictactoe"


    post "/api/v1/games/random_game.json", 
      :token => player2.authentication_token,
      :game_type => "tictactoe"

    parsed_body = JSON.parse(last_response.body)
    parsed_body.has_key?("gamestate").should == true
    end

期待されること: 最初の呼び出しは status:success を返す必要があります 2 番目の呼び出しは新しいゲームの json を返す必要があります

何が起こるのですか:

最初の呼び出しは status:success を返します

2 番目の呼び出しは status:failed error:"Player cannot have two pending games of same type" を返します

ランダムゲームの方法では、ユーザーの印刷ステートメントを投げました。常にプレイヤー 1 です。

ランダム ゲーム メソッドでは、パラメーターの print ステートメントを使用しました。2 つの異なるトークンを投稿しています。

最悪の部分は、CURL を使用してこれらの同じ呼び出しを行うと、成功することです。

ユーザーセッションをキャッシュするためにRspecで何かが起こっていますか??

4

1 に答える 1

0

次のように認証トークンをスタブできます。

player1.stub(:authentication_token).and_return("test1234")
player2.stub(:authentication_token).and_return("test4321")
于 2012-07-28T17:48:14.713 に答える