2013-04-15 7 views
0

cashout.rbRSpec частный метод испытания с factory_girl

class Cashout < ActiveRecord::Base 
    belongs_to :partner 
private 
    def partner_exist? 
    if self.partner.nil? 
     errors.add(:base, "There is no partner! ") 
     return false; 
    end 
    return true 
    end 
end 

cashout_spec.rb

context 'should check partner existence' do 
    it 'if partner is not nil' do 
     @company = Factory(:company) 
     @partner = Factory(:partner, :company => @company) 
     @cashout = Factory.build(:cashout, :partner => @partner) 
     @cashout.save 
     @cashout.partner_exist?.should eql(true) 
    end 
end 

Это моя модель файл и проверить результаты испытаний file.The является

1) Cashout should check partner existence if partner is nil 
    Failure/Error: @cashout3.partner_exist?.should eql(false) 
    NoMethodError: 
     private method `partner_exist?' called for #<Cashout:0x007f822189dfa0> 
    # ./spec/models/cashout_spec.rb:47:in `block (3 levels) in <top (required)>' 

Вы знаете, как можно Я тестирую частные методы?

+0

Я предполагаю, что '' partner_exist вызывается, либо в другом методе или обратного вызова, так почему бы не просто проверить, есть ли '» «Ошибка в вашей модели, если вы вызываете« сохранить »для обоих экземпляров, где есть и не является« партнером »? –

ответ

4

Вы можете назвать частные методы с помощью send:

@cashout3.send(:partner_exist?).should eql(false) 
Смежные вопросы