2016-04-03 65 views
0

我遵循Michael Hartl的Ruby on Rails教程。我觀察到他用minitest進行測試。我使用RSpec。下面是代碼的教程線我要使用RSpec什麼是assert(minitest)等效的RSpec語法

test "email validation should accept valid addresses" do 
    valid_addresses = %w[[email protected] [email protected] [email protected] 
        [email protected] [email protected]] 
    valid_addresses.each do |valid_address| 
    @user.email = valid_address 
    assert @user.valid?, "#{valid_address.inspect} should be valid" 
    end 
end 

複製這是我怎麼會做這樣的使用RSpec。

it "email validation should accept valid addresses" do 
    valid_addresses = ["[email protected]", "[email protected]", "[email protected]", 
        "[email protected]", "[email protected]"] 
    valid_addresses.each do |valid_address| 
    user.email = valid_address 
    expect(@user.valid?).to be true, "#{valid_address.inspect} is not correct" 
    end 
end 

但是,我運行此測試時出現參數錯誤。看起來RSpec在測試用例中只需要一個參數。

回答

0

RSpec的認爲你傳遞一個參數到to方法和兩個參數爲be方法,因此它給你一個錯誤。它看到你的發言爲:

expect(@user.valid?).to(be(true, "#{valid_address.inspect} is not correct")) 

所以,你可以改變你的天賦是以下內容,它應該工作:

expect(@user.valid?).to be(true), "#{valid_address.inspect} is not correct" 

這裏,RSpec的是看到被傳遞到to方法兩個參數,這是有效的。

0

到底發生了什麼錯誤信息。看起來你有一個錯字。如果

user.email = valid_address 

@user.email = valid address 

你提供2個參數和期望聲明需要一個。

expect(@user.valid?).to be true 
+0

這是一個錯字@margo,'''user''應該是'''@ user'''。錯誤信息是:'''ArgumentError: 錯誤的參數數量(給定2,預期1)'''' –

相關問題