2
將常量或引用的字符串傳遞給rspec以獲取類名是否有區別?引用RSpec中的類名稱
常數:
require 'spec_helper'
describe Match do
end
引用:
require 'spec_helper'
describe "Match" do
end
將常量或引用的字符串傳遞給rspec以獲取類名是否有區別?引用RSpec中的類名稱
常數:
require 'spec_helper'
describe Match do
end
引用:
require 'spec_helper'
describe "Match" do
end
的第一個參數describe
是示例組的描述。然而,每https://www.relishapp.com/rspec/rspec-core/v/3-0/docs/subject/implicitly-defined-subject:
如果第一個參數到最外面的示例基團是類,該類的實例 經由受試者 方法暴露於每個實施例。
它還補充道:
雖然下面的例子演示主題如何被用作 面向用戶的概念,我們建議您保留它支持的 定製的匹配器和/或延長從 例子中隱藏其使用的庫。
行爲規則比上面隱含的要複雜一點,但至少從RSpec 2.99開始。例如,非類參數仍然通過主題方法公開,但最內層的示例組優先。另外,關於實例化類的規則將適用,即使它不是最外面的示例組。
下面通過實施例說明更多的情況:
# simple case for class
describe Object do
specify {subject.should be_an_instance_of(Object)}
end
# simple case for non-class
describe "String" do
specify {subject.should be_eql("String")}
end
# nested non-class arguments; inner takes precedence
describe "Outer String" do
describe "String" do
specify {subject.should be_eql("String")}
end
end
# nested class arguments; outer takes precedence
describe Object do
describe Module do
specify {subject.should be_an_instance_of(Object)}
end
end
# class inside non-class; class takes precedence
describe "String" do
describe Object do
specify {subject.should be_an_instance_of(Object)}
end
end
# class inside explicit subject; explicit subject takes precedence
describe "Outer string" do
subject {"String"}
describe Object do
specify {subject.should be_eql("String")}
end
end
# class outside explicit subject; explicit subject takes precedence
describe Object do
subject {"String"}
describe Module do
specify {subject.should be_eql("String")}
end
end