1
我在運行rails-api的Rails 4 API上運行使用RSpec的集成測試。我想看看如果錯誤的電子郵件地址傳遞給登錄控制器,我會得到一個401回。Rspec在檢測到401錯誤時沒有找到記錄時掛起
這裏是我的期望
it "should throw invalid login for user with invalid email" do
post "/api/v1/users/sign_in", uname: "[email protected]", password: "12234"
expect(response).to eq(401)
end
在我的控制,我有:
def create
@user = User.find_by_email(params[:uname])
if(@user && @user.valid_password?(params[:password]))
....
end
這個工程在瀏覽器很好,我得到一個401回。但是當我運行rspec時,它會掛起,從不報告失敗或通過,只是坐在那裏沒有錯誤。問題的癥結似乎是if(@user)部分。如果我刪除它,那麼測試至少會運行。
我檢查了log/test.log,我可以看到在日誌中已完成401未授權14ms(查看:0.2ms | ActiveRecord:2.8ms)。
更新
爲了澄清,這是一個request spec
。我正在測試API的使用者在無效電子郵件的情況下會收到401響應。
這做到了。期望(response.response_code)。至公式401'工作。我扔了200個答案,我一直在使用'expect(response).to be_success',但顯然對於非200個答案我需要更具體。 – ejvaudio