2013-08-26 144 views
0

我沒有找到Rspec describe方法的語法,但找到了一些例子。如果我正確理解,我們可以將describe方法傳遞給一個字符串,一個類名(例如模型名),以及一個字符串和類名作爲參數。這三個調用describe的情況有什麼區別?Rspec描述方法語法

describe 'string' do 
... 
end 

describe ModelName do 
... 
end 

describe 'string', ModelName do 
... 
end 

回答

2

這取決於你想描述的東西。

該說明適用於您和使用該代碼庫的其他開發人員。

$ rspec --format=documentation spec/ 

或只是

$ rspec -fd spec/ 

會出

string 
    ... 
ModelName 
    ... 
string ModelName 
    ... 
4

它不是一個頻繁使用的功能(當然在我有限的經驗),但如果能提供一個模塊describe可以養活subject或類別名稱(或大概是其他待測物)

class Foo 
end 

describe Foo do 
    it "should be a Foo" do 
    subject.should be_a Foo 
    end 
end 

在上面的示例中,通過describe的類名已導致它從subject返回Foo.new。雖然通過字符串"Foo"不會以相同的方式工作。


又如:

describe [], "an empty array" do 
    it "should return nil from any index" do 
    subject[1].should be_nil 
    end 
end 

運行它:

$ rspec -f d rspec_describe.rb 

[] an empty array 
    should return nil from any index 

Finished in 0.00255 seconds 
1 example, 0 failures 
+0

看來這是不推薦,但:https://github.com/rspec/rspec-core/blob/ 7c5d508bebf64c7f00b9d7d63ad1114ef481914c/lib目錄/ RSpec的/核心/ memoized_helpers.rb#L36 –