Rspec描述方法语法

时间:2013-08-26 11:06:21

标签: ruby-on-rails ruby rspec

我找不到Rspec describe方法的语法,但找到一些例子。如果我正确理解,我们可以将describe方法传递给字符串,类名(例如,模型名称),以及字符串和类名作为参数。这三种调用情况describe之间有什么区别?

describe 'string' do
...
end

describe ModelName do
...
end

describe 'string', ModelName do
...
end

2 个答案:

答案 0 :(得分:4)

这不是一个使用频繁的功能(诚然,在我有限的经验中),但describe如果提供了模块或类名(或者可能是其他测试对象),则可以提供subject

class Foo
end

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

在上面传递的示例中,为describe提供了一个类名,导致它从Foo.new返回subject。而传递字符串"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

答案 1 :(得分:2)

这取决于你想描述的事情。

该描述适用于您和使用该代码库的其他开发人员。

$ rspec --format=documentation spec/

或只是

$ rspec -fd spec/

将会出局

string
  ...
ModelName
  ...
string ModelName
  ...