我在定義rspec文件時使用的結構(基於我對rspec所做的閱讀)是您使用describes
來描述特定功能,並且context
通過函數來討論狀態和/或路徑的特定上下文。
Example類:
class MyClass
def self.my_class_method(bool)
if bool == true
return "Yes"
else
return "No"
end
end
def my_instance_method
today = Date.today
if today.month == 2 and today.day == 14
puts "Valentine's Day"
else
puts "Other"
end
end
end
正如你所看到的,我定義一個類的方法和做真的很傻和隨機函數實例方法。但重點在於:類方法會根據參數做一些不同的事情,實例方法會根據一些外部因素做一些不同的事情:您需要測試所有這些,並且這些方法不同上下文。但我們將描述爲 rspec文件中的函數。
Rspec的文件:
describe MyClass do
describe ".my_class_method" do
context "with a 'true' argument" do
it "returns 'Yes'." do
MyClass.my_class_method(true).should eq "Yes"
end
end
context "with a 'false' argument" do
it "returns 'No'." do
MyClass.my_class_method(false).should eq "No"
end
end
end
describe "#my_instance_method" do
context "on Feb 14" do
it "returns 'Valentine's Day'." do
Date.stub(:today) { Date.new(2012,2,14) }
MyClass.new.my_instance_method.should eq "Valentine's Day"
end
end
context "on a day that isn't Feb 14" do
it "returns 'Other'." do
Date.stub(:today) { Date.new(2012,2,15) }
MyClass.new.my_instance_method.should eq "Other"
end
end
end
end
所以,你可以看到describe
是說你描述的方法,並在你的類中的方法的名稱相匹配。 context
用於評估方法可以調用的不同條件,或者影響方法工作方式的不同狀態。
希望這會有所幫助!
謝謝,給了我一個清晰的認識。 – user1568617 2012-08-02 13:31:56
不客氣! – MrDanA 2012-08-02 14:31:30
+1這也正是我這樣做的方式 – severin 2012-08-02 15:01:35