【问题标题】:Ruby on Rails TDD; Error while testingRuby on Rails TDD;测试时出错
【发布时间】:2012-03-08 11:35:52
【问题描述】:

我正在尝试遵循 TDD on Rails 教程,该教程可在线获得 here

在测试第一个应用时,我遇到了一个错误。

我的 spec.rb 代码是这样的:

require 'spec_helper'

describe "Static pages" do
  describe "Home page" do

    it "should have the content 'Sample App'" do
      visit '/static_pages/home'
      page.should have_content('Sample App')
    end
  end
end

运行测试后出现此错误:

Failure/Error: visit '/static_pages/home'
 NoMethodError:
   undefined method `visit' for #    <RSpec::Core::ExampleGroup::Nested_1::Nested_1:0xa833e5c># ./spec/requests/static_pages_spec.rb:8:in `block (3 levels) in <top (required)>'

非常感谢您的帮助。

【问题讨论】:

  • 文件的路径和名称是什么?是像教程中那样的 spec/requests/static_pages_spec.rb 吗?我发现,Rspec 非常“神奇”,它基于文件名的可用和包含的测试助手和方法。

标签: ruby-on-rails tdd rspec-rails railstutorial.org


【解决方案1】:

visit 方法不是 RSpec 的一部分 - 它由 capybara 提供。只需将其添加到您的 Gemfile 中:

gem 'capybara'

【讨论】:

  • 我已经安装了 capybara 但我得到了同样的错误?我看到我的 gemfile 列表中安装了 capybara 1.1.2 以及“gem list”命令结果。你有什么想法吗?
  • @Thilo 我昨天解决了这个问题,无论如何谢谢 :) 目前,我正忙着在 nokogiri 上拉头发...
  • @scaryguy 你是如何解决这个问题的?我很好奇,因为我有同样的问题。我尝试在 spec_helper.rb 中包含 Capybara::DSL 但它警告我不要将 capybara 包含在全局空间中...?
  • 对不起@sambehera 我真的不记得了,我已经有一段时间没有从事那个项目了。
【解决方案2】:

尝试添加:

require 'rails_helper'
require 'spec_helper'

到你的 spec.rb 和:

require 'capybara'

RSpec.configure do |config|
  config.include Capybara::DSL 
....

到 spec_helper.rb

和 gem 'capybara', '2.2.0' 到 gemfile

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多