我已经安装了rspec-rails 3.0.0.beta1
(在ruby2 + rails4上)并且在我的请求规范中使用了设计帮助器时遇到了一些麻烦。经过一些谷歌搜索,我发现我需要将我的所有规格从spec/requests
移动到spec/features
(请求目录是由rspec安装程序或脚手架生成器创建的[现在不确定],所以我'有点困惑)。这使我的设计助手工作,但有更多的问题。
以下是三种情况:
规范文件为spec/requests/events_spec.rb
,且没有任何type
设置
undefined method 'visit' for #<RSpec::ExampleGroups::Events::GETEvents:0x007ff2464d9848>
规格文件为spec/requests/events_spec.rb
且有type: :controller
当我尝试使用undefined method 'events_path' for nil:NilClass
方法时,它会引发错误get events_path
规范文件为spec/features/events_spec.rb
,且没有任何type
设置
undefined method `get' for #<RSpec::ExampleGroups::Events::GETEvents:0x007ffb2714a968>
规范文件为spec/features/events_spec.rb
,并且type: :controller
undefined method `events_path' for nil:NilClass
我想我可以在互联网上找到一些调整,但我是一个新鲜的rspec用户,我觉得我做的事情非常错误。并且所有在线示例都与我的问题无关。
答案 0 :(得分:1)
从Capybara 2.0开始,Capybara方法(例如visit
)仅在功能规格中可用,而不是请求规格或控制器规格。
同样,get
方法不可用于功能规格,仅适用于控制器和请求规范。
最后,路径助手方法仅在请求或功能规范中可用。
鉴于此,您的失败可以解释如下:
您需要:
get
等不适用于功能规格的方法以下some interesting background介绍了与请求规范不同的功能规范