我有一个基本的疑问。如果 rspec 文件包含许多上下文:
describe Name do
context "number1" do
.......
.......
end
context "number 2" do
.......
.......
end
context "number 3" do
.......
.......
end
.rb 文件中应该如何描述每个上下文中的函数?他们应该在同一个班级还是不同班级?有什么书我可以阅读以提高我对这方面的了解吗?
我有一个基本的疑问。如果 rspec 文件包含许多上下文:
describe Name do
context "number1" do
.......
.......
end
context "number 2" do
.......
.......
end
context "number 3" do
.......
.......
end
.rb 文件中应该如何描述每个上下文中的函数?他们应该在同一个班级还是不同班级?有什么书我可以阅读以提高我对这方面的了解吗?
我在定义 rspec 文件时使用的结构(基于我对 rspec 所做的阅读)是describes
用于描述特定函数,并context
讨论特定的状态上下文和/或函数的路径。
示例类:
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
is 用于说明您正在描述的方法,并与您的类中方法的名称相匹配。用于评估可以调用方法的context
不同条件,或影响方法工作方式的不同状态。
希望这可以帮助!