2010-07-27 48 views
1

我正在为我的Cars类写rspec测试,并且有关于设置mock的问题。我想在Cars中存储零件数组,我该怎么做?Stubbing A Model Attribute

我有以下代码:

class Cars 
    has_many :parts 

    def heavy_count 
    parts.inject(0) { |sum, v| v.weight > 10 ? sum + 1 : sum } 
    end 
end 

随着测试

context ("#heavy_count") do 
    let(:car) {mock_model(Car, :brand => "toyota")} 
    let(:vote_1) {mock_model(Part, :weight => 11)} 
    let(:vote_2) {mock_model(Part, :weight => 11)} 

    it "should return 2 if there are 2 parts heavier than 10" do 
    #how do I stub parts here? 
    end 
end 

回答

4

假设你正在使用RSpec的嘲讽为,而不是另一个框架:

Part.should_receive(:find).and_return([vote_1, vote2])