测试中的ROR语法错误

时间:2013-09-13 07:58:32

标签: ruby-on-rails ruby unit-testing ruby-test

我是ROR的新手,并致力于为游戏提供Web服务的项目。我必须为该服务编写测试用例。

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

我编写了以下内容以在db

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

控制器代码

def创建     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'}})

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

1 个答案:

答案 0 :(得分:0)

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

render来电的更完整示例:

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

Ruby会将哈希转换为JSON本身。或者您可以通过调用.to_json手动执行此操作。