我仍然是一個新手,我很難過:我有一個'find_by'語句在生產環境中執行時可以正常工作,但它失敗在測試期間,就我所能確定的而言,是相同的輸入。Rails:find_by在測試中失敗,在生產中工作
我有一個非常簡單的表格,由seeds.rb填充如下:
Nonprofit.create!(id: 1, name: "Nonprofit number 1")
Nonprofit.create!(id: 2, name: "Nonprofit number 2")
在我的會話控制器,我有以下兩個語句:
puts "=======>" + params[:nonprofit_id] + "<=============="
nonprofit = Nonprofit.find_by(id: params[nonprofit_id])
puts "=======>" + nonprofit.name + "<=============="
在生產環境中,日誌顯示:
Processing by SessionsController#create as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"Mm7qVchebMORY5QBOlvl1ac69m1ACwttXcE71LbfHnHH2RqpB6mSP+wFxodop/9Mgv/NlLO9V9NVEcTU1a54tw==", "session"=>{"email"=>"[email protected]", "password"=>"[FILTERED]", "remember_me"=>"0"}, "nonprofit_id"=>"1", "commit"=>"Log in"}
==================>>>1<=========
Nonprofit Load (0.3ms) SELECT `nonprofits`.* FROM `nonprofits` WHERE `nonprofits`.`id` = 1 LIMIT 1
==================>>> Nonprofit number 1
換句話說,ActiveRecord查找正確的表使用id值爲1的條目。
來自測試運行的日誌顯示與'puts'完全相同的輸出,但隨後在第二個'puts'中出錯,因爲(大概)find_by找不到記錄。這裏的日誌從試運行:
運行:
================== >>> 1 < ========= E
以0.467105s,2.1408sun/s,0.0000斷言/ s完成。
1)錯誤: UsersIndexTest#test_index_as_non管理員: NoMethodError:未定義的方法name' for nil:NilClass app/controllers/sessions_controller.rb:14:in
創建 ' 測試/ test_helper.rb中:19:在log_in_as' test/integration/users_index_test.rb:29:in
塊'
任何想法/建議?或者(或另外)我怎樣才能使測試運行日誌顯示活動記錄查詢,如生產運行的日誌顯示?
謝謝!
明白了 - 謝謝......令人困惑的是,我在我的裝置中輸入了條目,但沒有包含ID字段。補充說,它工作。 –