簡體   English   中英

獲取ArgumentError:錯誤的參數數量(1表示2)

[英]Getting at ArgumentError: wrong number of arguments (1 for 2)

這是對用戶模型的測試-問題在最下面,但是即使引用了特定行,也無法弄清為什么會出錯。

    require 'test_helper'

class UserTest < ActiveSupport::TestCase

  def setup
    @user = User.new(name: "Example User", email: "user@example.com")
  end

  test "should be valid" do
    assert @user.valid?
  end

  test "name should be present" do
    @user.name = " "
    assert_not @user.valid?
  end

  test "email should be present" do
    @user.email = " "
    assert_not @user.valid?
  end

  test "name should not be too long" do
    @user.name = "a" * 51
    assert_not @user.valid?
  end

  test "email validation should reject invalid addresses" do
    invalid_addresses = %w[user@example,com user_at_foo.org user.name@example.foo@bar_baz.com foo@bar+baz.com]
    invalid_addresses.each do |invalid_address|
      @user.email = invalid_address
      assert_not @user.valid?
    end

   #this is the line 36 its complaining about... 
  test "email addresses should be unique" do
    duplicate_user = @user.dup
    duplicate_user.email = @user.email.upcase
    @user.save
    assert_not duplicate_user.valid?
    end
  end  
end

我的/models/user.rb如下:

class User < ActiveRecord::Base
before_save { self.email = email.downcase }  
validates :name,  presence: true, length: { maximum: 50 }
VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i
  validates :email, presence: true, format: { with: VALID_EMAIL_REGEX },
            uniqueness: { case_sensitive: false }
end

這是我遇到的錯誤,但實際上無法弄清楚我得到了多少錯誤的論點,尤其是因為這是從邁克爾·哈特斯(Michael Hartls)的書的第6章中摘錄的-現在已經拖延了大約一天的時間,不能解決嗎?

ERROR["test_email_validation_should_reject_invalid_addresses", UserTest, 0.0499
93779]                                                                         
 test_email_validation_should_reject_invalid_addresses#UserTest (0.05s)        
ArgumentError:         ArgumentError: wrong number of arguments (1 for 2)      
            test/models/user_test.rb:36:in `test'                              
            test/models/user_test.rb:36:in `block in <class:UserTest>'         
        test/models/user_test.rb:36:in `test'                                  
        test/models/user_test.rb:36:in `block in <class:UserTest>'     

您的end在最后2個測試中有些混亂。 完整修訂的文件如下:

require 'test_helper'

class UserTest < ActiveSupport::TestCase

  def setup
    @user = User.new(name: "Example User", email: "user@example.com")
  end

  test "should be valid" do
    assert @user.valid?
  end

  test "name should be present" do
    @user.name = " "
    assert_not @user.valid?
  end

  test "email should be present" do
    @user.email = " "
    assert_not @user.valid?
  end

  test "name should not be too long" do
    @user.name = "a" * 51
    assert_not @user.valid?
  end

  test "email validation should reject invalid addresses" do
    invalid_addresses = %w[user@example,com user_at_foo.org user.name@example.foo@bar_baz.com foo@bar+baz.com]
    invalid_addresses.each do |invalid_address|
      @user.email = invalid_address
      assert_not @user.valid?
    end  # end of each block
  end    # end of test block

  test "email addresses should be unique" do
    duplicate_user = @user.dup
    duplicate_user.email = @user.email.upcase
    @user.save
    assert_not duplicate_user.valid?
  end    # end of test block
end      # end of class

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM