2014-06-17 12 views
11

ja niedawno zmodernizowane od 2.99 do RSpec RSpec 3. To będzie jeden z moich specyfikacji:Jak przekonwertować errors_on na składnię RSpec 3?

require 'spec_helper' 

    describe User, :type => :model do 

    it "is invalid without a password" do 
     expect(FactoryGirl.build(:user, :password => nil).errors_on(:password).size).to eq(1)  
    end 

    end 

end 

już prowadził gem Transpec który ma przekształcić większość moich specyfikacji do RSpec 3 składni. Jednak ja wciąż otrzymuję ten błąd (i kilka innych):

Failure/Error: expect(FactoryGirl.build(:user, :password => nil).errors_on(:password).size).to eq(1) 
NoMethodError: 
    undefined method `errors_on' for #<User:0x00000108beaba0> 

próbowałem ponownie napisać egzamin w wielu różnych sposobów, ale błąd nie odejdzie.

Czy ktoś może pomóc?

Odpowiedz

10

Jeśli nie chcesz, aby pakiet kolejny gem, można zadzwonić valid? na temat testu, a następnie uzyskać dostęp do errors tablicy:

require 'spec_helper' 

describe User, :type => :model do 

    it "is invalid without a password" do 
    user = FactoryGirl.build(:user, :password => nil) 
    user.valid? 
    expect(user.errors[:password].size).to eq(1) 
    end 

end 
0

Proste podejście jest:

it "is not valid without a correct email format" do 
    user.email = 'user-email.com' 
    user.valid? 

    expect(errors_from session_form, :email).to include('is invalid') 
end 

def errors_from(record, attr) 
    record.errors[attr].to_sentence 
end