我正在遵循micheal hartl的ruby on rails教程2.3版,并且我已经正确地遵循了集成测试的步骤。在/sample_app/spec/integration中,我有一个名为layout_links_spec.rb的文件,如下所示。

require 'spec_helper'
describe "Layout links" do
 it "should have a Home page at '/'" do
  get '/'
   response.should render_template('pages/home')
  end
 end

当我这样做的时候
$ spec spec/

我得到以下错误
1)
NoMethodError in 'Layout links should have a Home page at '/''
undefined method `merge' for nil:NilClass
 /home/rails_projects/sample_app/spec/integration/layout_links_spec.rb:4:

Finished in 0.060225 seconds

1 example, 1 failure

请帮助我解决这个错误

最佳答案

基于这个问题,在我看来,你是在遵循他的教程的第一版。如果是,他用来生成集成测试的命令在第178页第5.2.1节

rails generate integration_test layout_links

结果是spec/requests/layout_links_spec.rb下的文件
如果您浏览他的应用程序的源代码,则没有spec/integration文件夹看一看here这是否有帮助。希望如此。
注:他评论道:“在RSpec中,集成测试也被称为请求规范——这个术语的起源对我来说很模糊。”
在RSpecdocs中,我发现:请求规范为Rails的集成测试提供了一个很薄的包装,并且被设计成驱动整个堆栈的行为,包括路由(由Rails提供)和无存根(由您决定)。

关于ruby-on-rails - 运行RSpec集成测试时,NoMethodError未定义方法“合并”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13112959/

10-12 07:37