基于我对rspec规范的理解,我希望通过以下示例.
describe ApplicationController do
controller do
def test
end
end
it "calls actions" do
get :test
end
end
Run Code Online (Sandbox Code Playgroud)
相反,它失败了:
No route matches {:controller=>"anonymous", :action=>"test"}
Run Code Online (Sandbox Code Playgroud)
我甚至尝试在路径文件中为"匿名"控制器定义路由,但无济于事.这里有什么我想念的吗?这应该工作,不应该吗?
这让我感到惊讶......
似乎您不能在项目的任何位置为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)
当然这是一个常见的问题.
这里有什么我想念的吗?