2016-04-03 2 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は、テストケースでは1つの引数しか期待していないようです。

答えて

0

RSpecのは、あなたがto方法とbe方法には2つの引数に単一の引数を渡している、したがって、それはあなたにエラーを与えていると思います。だから、あなたは次のようにあなたの仕様を変更することができ、それが動作するはず

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メソッドに渡されている2つの引数を見ていますこれは有効です。

0

取得しているエラーメッセージは正確です。タイプミスがあるようです。

user.email = valid_address 

は、あなたが2つの引数を提供していると期待する文が1をとる

@user.email = valid address 

でなければなりません。

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

これはtypo @margoです。 '' 'user'''は' '@ user'''でなければなりません。エラーメッセージは次のとおりです: '' 'ArgumentError: 引数の数が間違っています(与えられた2、期待される1)' '' –

関連する問題