0

我是 ROR 的新手,正在开发一个为游戏提供 Web 服务的项目。我必须为该服务编写测试用例。

我如何针对每个模型和控制器案例进行案例分析。

我编写了以下内容以在 db 中创建一个新用户

    test "create" do
    post(:create,
            {
                player:{
                    'player_name' => "usman", 
                    'password' => 123, 
                    'email' => 'ranasaani@gmail.com'
                }
            }
        )
    assert_select reponse.body

控制器代码是

def create player = Player.create(params['player'])

if player.valid?
  # if creation successful, log the player in:
  player_session = PlayerSession.create(
    player: player,
    session_token: ActiveSupport::SecureRandom.urlsafe_base64
  )

  render json: {session_token: player_session.session_token}
else
  render json: {error: "Player name already exists."}, status: :unprocessable_entity
end

end

但是有一个错误

SyntaxError: xxx/players_controller_test.rb:5: syntax error, unexpected ':'
post(:create, {'player':{'player_name' => "usman", 'password' => 123, 'email' => 'ranasaani@gmail.com'}})

有没有指南,如何编写测试用例?

4

1 回答 1

0

我不是在评论您的测试方法,但在您的代码示例的大多数情况下,语法更像 JSON 而不是 ruby​​ 哈希。使用:player => { :player_name => "usman", ... }. 您可以使用字符串'player'或红宝石符号:player作为键。

您的电话的更完整示例render

render :json => {:error => "Player name already exists."}, :status => :unprocessable_entity

Ruby 会将散列转换为 JSON 本身。或者你可以通过调用它来手动完成.to_json

于 2013-09-13T08:15:12.440 回答