如何测试路由在rails中的特定参数上返回true / false?

时间:2014-07-03 19:52:53

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-4

如果我有一个简单的登录功能:

def login
  @user = User.find_by_email params[:email]
  if @user
    if  BCrypt::Password.new(@user.encrypted_password).is_password? params[:password]
      session[:current_user_id] = @user.id
      render json: true
    else
      render json: false
    end
  else
    render json: false
  end
end

我想测试如果用户不存在,此函数是否实际返回false我创建了以下测试:

  def test_my_action
    post :login, :format => 'json',  :email => 'foo@bar.com', :password => 'test'
    assert_response json:false
  end

我知道assert_response将返回状态200或其他,但我无法弄清楚如何创建必要的断言。

如何测试我的登录功能是否实际返回false?

1 个答案:

答案 0 :(得分:1)

根据@infused链接,解析' response.body'会有问题。因为它是一个字符串。 你可以这样做

response.body.should eq('false')

response.body.should eq('true')

但我想建议使用{key =>渲染json价值}对。