2012-04-19 14 views
12

だが、私はそうのようなクラス定義があるとしましょう:クラスがRSpecクラスメソッドに対してrespond_toをアサートする方法は?

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がクラスメソッドで失敗するはずであることはRSpecのドキュメントからわかりません。

答えて

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/


OLD ANSWER :

実際にあなたが主題を提供することにより、このアプローチを行うことができます。

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

をここで説明したように:http://betterspecs.org/#subject

関連する問題