2014-06-17 5 views
11

मैं हाल ही में RSpec 2.99 से RSpec 3. करने के लिए यह मेरा चश्मा में से एक हो सकता है उन्नत बनाया:error_on से 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 

मैं पहले से ही TRANSPEC मणि कि RSpec 3 वाक्य रचना के लिए मेरी ऐनक के सबसे कन्वर्ट करने के लिए माना जाता है भाग गया। हालांकि, मैं अब भी यह संदेश (और कुछ अन्य लोगों) हो रही है:

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

मैं अलग तरीके का एक संख्या में पुन: परीक्षण लिखने का प्रयास किया लेकिन त्रुटि दूर नहीं जाना होगा।

क्या कोई मदद कर सकता है?

उत्तर

3

ऐसा लगता है कि यह rspec-collection_matchers में मौजूद है। this issue से भी आप इसे बंदर बंद कर सकते हैं।

+0

निश्चित है कि यह, धन्यवाद! – Tintin81

10

आप एक और मणि बंडल नहीं करना चाहते हैं, तो आप परीक्षण विषय पर valid? कॉल कर सकते हैं और फिर errors सरणी का उपयोग:

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

एक सरल तरीका है:

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 
संबंधित मुद्दे