2013-08-26 143 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 –