2013-10-01 67 views

回答

2

我希望這個代碼可以更清楚:

假設你有一個類:

class A 
    def initialize(m, n) 
    @m = m 
    @n = n 
    end 

    def m 
    @m 
    end 

    def n 
    @n 
    end 
end 

比測試m返回您可以使用此代碼問題的正確值的方法:

subject { A.new("lorem", "ipsum") } 
specify { subject.m.should == "lorem" } 
specify { subject.n.should == "ipsum" } 

在上面的示例中subject將是您在subject { A.new("lorem", "ipsum") }中創建的對象。

或者你可以用這樣的代碼,使rspec的例子更短:

subject { A.new("lorem", "ipsum") } 
its(:n) { should == "lorem" } 
its(:m) { should == "ipsum" } 

而且在文章page只是其中創建了別的地方測試的代碼的對象。

+0

謝謝@andrei!很好的解釋 – JGutierrezC

3

subjectrspec method這需要,這將是你的說法的隱含話題塊。 page是指(可能)Capybarapage對象,它可以在使用水豚的rspec測試中使用,您可以在其中執行類似visit('/some/url')的操作。

+0

其實,它是_implicit_主題。 :-)你仍然可以爲每個斷言指定一個明確的主體,或明確地使用變量'subject'。 –

相關問題