Несколько звонков для посещения с RSpec и Capybara - PullRequest
3 голосов
/ 14 октября 2011

У меня есть спецификация запросов, которая делает несколько звонков для посещения в пределах одного блока (посещения / сессий / новых и посещений / администратора).В результате:

ActionView::Template::Error:
       undefined local variable or method `view_factory' for #<#<Class:0x007fedda1d5180>:0x007fedda1bb118>

Есть ли способ это исправить?Благодарю.Код:

describe "Admin" do

  before do
    visit new_session_path
    fill_in "Email",    with: user.email
    fill_in "Password", with: user.password
    click_button "Submit"
  end

  describe "GET /admin" do
    it "should be successful" do
      visit admin_dashboard_path
    end
  end

end

Обновление :

После некоторых поисков я обнаружил, что ошибки возникают только при работе с Spork .Вот мой spec_helper.rb файл, который настраивает Spork:

require 'rubygems'
require 'spork'
require 'simplecov'

ENV["RAILS_ENV"] ||= 'test'

SimpleCov.start if ENV["COVERAGE"]

Spork.prefork do

  require File.expand_path("../../config/environment", __FILE__)
  require 'rspec/rails'
  require 'capybara/rspec'

  Dir[Rails.root.join("spec/support/**/*.rb")].each {|f| require f}

  RSpec.configure do |config|
    config.mock_with :mocha

    config.include Auth::Helper
  end

end

Ответы [ 3 ]

1 голос
/ 20 октября 2011

У меня была похожая проблема, и я нашел небольшое решение.Я предполагаю, что view_factory - это вспомогательный метод, определенный в плагине, и он включается в помощник приложения с помощью чего-то вроде ActionController::Base.helper FactoryHelperModule.

. Что я сделал, так это включил следующий фрагмент в свое приложение / helpers /application_helper.rb:

if Rails.env.test?
  include FactoryHelperModule
end

Если вспомогательные методы находятся в модуле, и , если вспомогательные методы объявлены как мои, есть вероятность, что это будетРабота.Я пока не нашел, почему это происходит.

Кстати, я на рельсах 3.0.4 и spork 0.9.0.rc9

0 голосов
/ 02 февраля 2012
0 голосов
/ 14 октября 2011

Не знаю, решит ли это вашу проблему, но before должен находиться внутри блока, переданного describe:

describe "GET /admin" do
  before do
    visit new_session_path
    fill_in "Email",    with: user.email
    fill_in "Password", with: user.password
    click_button "Submit"
  end

  it "should be successful" do
    visit admin_dashboard_path
  end
end
...