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

预期:第一次调用应该返回状态:成功第二次调用应该返回新游戏的 json

怎么了:

第一次调用返回状态:成功

第二次调用返回状态:失败错误:“玩家不能有两个相同类型的未决游戏”

在随机游戏方法中,我抛出了用户的打印声明。它始终是玩家一号。

在随机游戏方法中,我看到了参数的打印语句。它发布了两个不同的令牌。

最糟糕的是,如果我使用 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 回答