2

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

请帮我解决这个错误

4

1 回答 1

1

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

rails generate integration_test layout_links

结果是spec/requests/layout_links_spec.rb下的一个文件


如果您浏览他的应用程序的源代码,则没有spec/integration文件夹。看看这里,看看这是否有帮助。希望如此。

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

在 RSpec docs中,我发现了这一点:Request specs 为 Rails 的集成测试提供了一个精简的包装器,旨在通过整个堆栈来驱动行为,包括路由(由 Rails 提供)并且没有存根(这取决于你)。

于 2012-10-29T03:22:04.403 回答