运行RSpec集成测试时,NoMethodError未定义方法'merge'

时间:2012-10-28 20:58:13

标签: ruby-on-rails ruby rspec

我正在关注 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

请帮我解决此错误

1 个答案:

答案 0 :(得分:1)

基于这个问题,我觉得你正在关注他的教程的第一版。如果是这样,他用于生成集成测试的命令在第178页,第5.2.1节

rails generate integration_test layout_links

结果是 spec / requests / layout_links_spec.rb

下的文件

如果您浏览其应用的源代码,则不会有 spec / integration 文件夹。看看here,看看这是否有帮助。希望如此。

PS:他评论"在RSpec中,集成测试也被称为请求规范 - 这个术语的起源对我来说是模糊的。"

在RSpec docs中,我发现了这一点:请求规范为Rails'提供了一个薄的包装器。集成测试,旨在通过完整堆栈驱动行为,包括路由(由Rails提供)和无存根(由您决定)。

相关问题