Ruby on Rails を使用してモバイル アプリケーション用の JSON API を構築しています。私は次のように機能するランダムゲーム関数を持っています:
- プレーヤー 1 がランダム ゲームを要求します。
- プレーヤー 2 がランダム ゲームを要求します。
- プレーヤーがペアを作るので、ゲームが開始されます。
これは /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で何かが起こっていますか??