如果我有一个简单的登录功能:
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?
答案 0 :(得分:1)
根据@infused链接,解析' response.body'会有问题。因为它是一个字符串。 你可以这样做
response.body.should eq('false')
或
response.body.should eq('true')
但我想建议使用{key =>渲染json价值}对。