在rspec中描述。什么时候使用报价?

时间:2014-02-05 06:51:59

标签: ruby rspec

有时候我看到的rspec看起来像这样:

describe Contact do
...
end

有时候我会这样看:

describe 'Contact' do
...
end

有什么区别?更一般地说,我在哪里可以找到这方面的文档?

2 个答案:

答案 0 :(得分:2)

如果您要描述一个特定的类,那么您应该使用常量形式。如果这样做,您将拥有返回该类的described_class辅助方法。也许在规格中派上用场。

describe Contact do
  puts described_class # >> Contact
end

describe "Contact" do
  puts described_class # >> nil
end

另外,正如@Santosh所说,不断形式保护你免受类名中的拼写错误的影响。说,你重命名了一个模型,但忘了更新规格。运行规范时会出错。

如果这个spec文件没有集中在一个类上,例如,测试几个东西的集成,那么你自然不会使用常量。因为你没有明确的。

describe "user registration process" do
  # integration specs
end

答案 1 :(得分:1)

describe是method,其中包含argumentblock

以这种方式看待它

 describe('Contact', {})

如果Contactclass,您可以像编写模型规范一样将其作为parameter传递。

describe(Contact, {}) # If Contact class doesn't exist, you will get an error