2015-09-15 56 views
2

我有一個腳本已演變成需要做一些斷言和匹配。如何在Rspec之外使用rspec期望和匹配器?

它是用ruby編寫的,我在Gemfile中包含了rspec並且需要它。

我發現這非常有用的,這樣發佈有關如何在irb使用:

How to use RSpec expectations in irb

我還發現了以下內容:

Use RSpec's "expect" etc. outside a describe ... it block

class BF 
    include ::Rspec::Matchers 

    def self.test 
    expect(1).to eq(1) 
    end 
end 

BF.test 

我在得到一個錯誤expect一行。

+1

...什麼錯誤你得到? –

回答

3

當你include模塊,它使其方法實例的類。您的test方法是單例方法(「類方法」),而不是實例方法,因此將永遠無法訪問混合模塊提供的方法。爲了解決這個問題,你可以這樣做:

class BF 
    include ::RSpec::Matchers 

    def test 
    expect(1).to eq(1) 
    end 
end 

BF.new.test 

如果你想RSpec::Matchers方法可用來的BF單方法,可以改爲extend模塊:

class BF 
    extend ::RSpec::Matchers 

    def self.test 
    expect(1).to eq(1) 
    end 
end 

BF.test 
+0

啊,這是延長,看起來像我想要它做的!現在嘗試! – Angela

+0

聖牛它的作品,真棒,只是授予,@myron – Angela