不得共享RSpec共享示例

Lac*_*ter 13 rspec ruby-on-rails

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

似乎您不能在项目的任何位置为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)
Run Code Online (Sandbox Code Playgroud)

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

这里有什么我想念的吗?

Dav*_*sky 11

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

  • 目的是在一个文件中定义它们并在其他n个文件中使用它们,所以如果你将它们放在不同的文件中它肯定会有效.惯例是将它们保存在spec/support下的文件中(例如spec/support/shared_examples_for_xyz.rb),并要求spec/spec_helper.rb中的那些文件. (4认同)