2012-04-19 9 views
12

चलो कहते हैं कि मैं बहुत की तरह एक वर्ग परिभाषा करते हैं:कैसे दावा करें कि एक वर्ग RSpec के साथ एक क्लास विधि का जवाब देगा?

class Foo 
    def init(val) 
    @val = val 
    end 

    def self.bar 
    :bar 
    end 

    def val 
    @val 
    end 
end 
एक कल्पना की तरह साथ

:

describe Foo 
    it { should respond_to(:val) } 
    it { should respond_to(:bar) } 
end 

दूसरा it दावे विफल रहता है। आरएसपीईसी के दस्तावेज से मुझे यह स्पष्ट नहीं है कि respond_to वर्ग विधियों पर असफल होना चाहिए।

उत्तर

9

आपका उदाहरण इस तरह लिखा जाना चाहिए:

it 'should respond to ::bar' do 
    Foo.should respond_to(:bar) 
end 
16

आजकल यह सुझाव दिया है हम उम्मीद करते हैं का उपयोग करें, इस तरह:

describe Foo do 
    it 'should respond to :bar' do 
    expect(Foo).to respond_to(:bar) 
    end 
end 

देखें: http://rspec.info/blog/2012/06/rspecs-new-expectation-syntax/


पुराने उत्तर :

यहाँ में वर्णित है

describe Foo do 
    subject { Foo } 
    it { should respond_to :bar } # :bar being a class method 
end 

:

वास्तव में आप एक विषय प्रदान करके इस दृष्टिकोण कर सकते हैं http://betterspecs.org/#subject

संबंधित मुद्दे