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
、メソッドを呼び出すことができるさまざまな条件、またはメソッドの動作に影響を与えるさまざまな状態を評価するために使用されます。
お役に立てれば!