剛剛開始使用Rails,正在努力學習Ruby on Rails Tutorial第六版。事情進展得很順利,已經能夠解決所有問題,直到現在 我在測驗無效表單提交時卡在了第 7.3.4 章。當運行測驗時,我收到了以下內容:
ERROR["test_invalid_signup_information", #<Minitest::Reporters::Suite:0x00000001390c2d78 @name="UsersSignupTest"> ,0. 7315919999964535]
test_invalid_signup_information#UsersSignupTest (0.73s))
Minitest::UnexpectedError: ArgumentError:錯誤的引數數(給出2,預期1)。
test/integration/users_signup_test.rb:8:in `block in <class:UsersSignupTest> '
17/17: [===============================================================================] 100%時間:00:00:00, 時間:00:00:00
在0.82379s內完成
17個測驗,33個斷言,0次失敗,1次錯誤,0次跳過
這里是測驗檔案。我試著測驗了這兩個檔案,它們產生了同樣的錯誤:
require "test_helper"
class UsersSignupTest < ActionDispatch::IntegrationTest
測驗 "無效的注冊資訊" do
獲取簽到路徑
before_count = User.count
post users_path, params: { user: { name: ' ',
email: 'user@invalid',
密碼: 'foo'。
password_confirmation: 'bar' } }
after_count = User.count
assert_equal before_count, after_count
assert_template ' users/new'
end
end
require 'test_helper'
class UsersSignupTest < ActionDispatch::IntegrationTest
測驗 "無效的注冊資訊" do
獲取簽到路徑
assert_no_difference 'User.count' do 獲得簽名_path。
post users_path, params: { user: { name: " ",
email: "user@invalid"。
密碼: "foo"。
password_confirmation: "bar" } }
end }
assert_template ' users/new'
end
end
uj5u.com熱心網友回復:
找到了一個解決方案:通過洗掉逗號,將呼叫post的引數視為一個引數。我很確定它應該拋出一個語法錯誤,但由于某些原因,它沒有拋出,這就通過了所有測驗。新代碼:
equire 'test_helper'。
class UsersSignupTest < ActionDispatch::IntegrationTest
測驗 "無效的注冊資訊" do
獲取簽到路徑
assert_no_difference 'User.count' do
post users_path params: { user: { name: " ",
email: "user@invalid"。
密碼: "foo"。
password_confirmation: "bar" } }
end }
assert_template ' users/new'
end
end
uj5u.com熱心網友回復:
我一直在處理同樣的問題,大約有兩天了。
以下是我的發現:
我發現了什么?
在測驗的開始部分放入以下命令
p method(:post)再次運行rails測驗,得到以下資訊
#<>#<>再次運行rails測驗,得到以下資訊
<#<方法。UsersSignupTest(Rails::Controller::Testing::Integration)#post(*args) /home/<your_name>/.rbinv/versions/3.0.0/lib/ruby/gems/3.0.0/gems/railstroller-testing-0.0.3/lib/rails/controller/testing/integration.rb:10>我們可以看到,post方法確實有1個Argument,負責的gem是rails-controller-testing。
我發現
解決方案
通過從Gemfile中洗掉rails-controller-testing gem并運行
bundle install,post 方法將接受 2 個 Arguments,而不會出現 Rails 檔案中所述的錯誤。
然而,出現的問題是,assert_template 命令將提示你在運行 rails test 時重新安裝 gem。
嘗試使用 assert_response 或 assert_select 來代替。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/313825.html
標籤:
下一篇:格式化html.erb中的日期
