不得共享RSpec共享示例

时间:2011-07-26 14:02:35

标签: ruby-on-rails rspec

这让我感到惊讶......

似乎您不能在项目的任何位置为2个rspec共享示例组使用相同的名称。如果这样做,那么当您运行rake spec(运行所有规范)时,rspec会抱怨使用非唯一名称声明了共享示例组。

即使对shared_examples_for的调用包含在描述块中,也会发生这种情况(人们会认为这应该是示例范围)。

起初我尝试通过更改示例组的名称来解决这个问题(不理想,但我可以忍受它)。

但是当我想将示例组分解为单独的文件时,这就成了一个问题,所以我可以在多个spec文件之间共享它。

当单独运行时,规格可以正常工作,但是当我运行套件时,rspec会抱怨。

`ensure_shared_example_group_name_not_taken': \
Shared example group 'a person' already exists (ArgumentError)

当然这是一个常见的问题。

这里有什么我想念的吗?

2 个答案:

答案 0 :(得分:11)

从rspec 2.6开始,共享示例是全局的。您可以在示例组中声明它们,但它们不限于该组。

答案 1 :(得分:2)

官方文档中有一些关于如何最好地处理此问题的提示:

https://www.relishapp.com/rspec/rspec-core/docs/example-groups/shared-examples

TL; DR

是的,共享的例子是全球性的。 Ruby On Rails的最佳实践:将共享示例放在spec / support / foo_bar_shared_examples.rb中,然后直接开始编写shared_example,而不必包含在任何describe块中或其他方式。