这让我感到惊讶......
似乎您不能在项目的任何位置为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)
当然这是一个常见的问题。
这里有什么我想念的吗?
答案 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
块中或其他方式。