剛從 Rails 開始,我正在學習 Ruby on Rails 教程第 6 版。事情進展順利,能夠解決所有問題,直到現在!在測驗無效表單提交時,我被困在第 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: wrong number of arguments (given 2, expected 1)
test/integration/users_signup_test.rb:8:in `block in <class:UsersSignupTest>'
17/17: [===============================================================================] 100% Time: 00:00:00, Time: 00:00:00
Finished in 0.82379s
17 tests, 33 assertions, 0 failures, 1 errors, 0 skips
這是測驗檔案。我已經嘗試測驗這兩個檔案并且它們產生相同的錯誤:
require "test_helper"
class UsersSignupTest < ActionDispatch::IntegrationTest
test "invalid signup information" do
get signup_path
before_count = User.count
post users_path, params: { user: { name: '',
email: 'user@invalid',
password: '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
test "invalid signup information" do
get signup_path
assert_no_difference 'User.count' do
post users_path, params: { user: { name: "",
email: "user@invalid",
password: "foo",
password_confirmation: "bar" } }
end
assert_template 'users/new'
end
end
這是我第一次使用 Rails,所以任何幫助都將非常感激!
uj5u.com熱心網友回復:
找到了解決方案:通過洗掉逗號將呼叫 post 的引數視為一個。很確定它應該拋出一個語法錯誤,但由于某種原因它不會,這會通過所有測驗。新代碼:
equire 'test_helper'
class UsersSignupTest < ActionDispatch::IntegrationTest
test "invalid signup information" do
get signup_path
assert_no_difference 'User.count' do
post users_path params: { user: { name: "",
email: "user@invalid",
password: "foo",
password_confirmation: "bar" } }
end
assert_template 'users/new'
end
end
uj5u.com熱心網友回復:
我已經處理同樣的問題大約兩天了。
這是我發現的:
將以下命令放在測驗的開頭
p method(:post)再次運行 rails test 并收到以下訊息
#<Method: UsersSignupTest(Rails::Controller::Testing::Integration)#post(*args) /home/<your_name>/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/gems/rails-controller-testing-0.0.3/lib/rails/controller/testing/integration.rb:10>我們可以在這里看到 post 方法確實有 1 個引數,負責的 gem 是 rails-controller-testing。
解決方案
通過從 Gemfile 中洗掉 rails-controller-testing gem 并
bundle install再次運行 post 方法將接受 2 個引數而不會出現 Rails 檔案中描述的錯誤。
然而,出現的問題是 assert_template 命令會提示您在運行時重新安裝 gem rails test。
嘗試使用assert_responseorassert_select代替。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/422147.html
標籤:
上一篇:HTML標簽的驗證問題
