0
我真的被困在這裏。我有一個Language
模式,即獲取此方法更新:當我在我的本地服務器上運行它,對象被更新Rails 5測試不會重現PATCH上的實際行爲
def update
@language = Language.find(params[:id])
if @language.update_attributes(language_params)
flash[:success] = 'Language information updated.'
redirect_to @language
else
@skill_errors = @language.errors
render 'edit'
end
end
爲成功更新的預期行爲再現,閃光出現,並重定向到@language
發生。
但是,在測試中,我只收到200: Success
響應,並且對象沒有更新。下面是測試代碼:
test 'should allow update when logged in as admin user' do
sign_in(@admin)
patch language_path(@ruby_language), params: { language: { name: 'Test'} }
assert_not flash.empty?
assert_redirected_to @ruby_language
@ruby_language.reload
assert_equal 'Test', @ruby_language.name
end
@admin
和@ruby_language
在燈具定義。這個測試中的所有斷言都失敗了,包括最後一個,reload
。我的猜測是,我可能會因爲使用Devise
和/或Kaminari
寶石而導致一些路由故障?另一方面,我的Language
路線非常簡單: resources :languages, concerns: :paginatable
(這裏關注的是人們可讀的URL格式)。請記住,一切都按預期工作,只有測試失敗,出於某種原因...提前致謝!
在調用'patch'方法後添加'puts @ response.body',並在這裏輸出。 –