неинициализированная константа RSpec :: Core :: ExampleGroup :: Nested_1 :: Factory - PullRequest
4 голосов
/ 22 июля 2011

Я использую rspec-guard для непрерывного выполнения моих тестов, но иногда тесты не выполняются из-за:

Running: spec/requests/signup_spec.rb
FF

Failures:

  1) Signup does not email confirmation mail after signup
     Failure/Error: visit new_user_path
     NameError:
       undefined local variable or method `new_user_path' for #<RSpec::Core::ExampleGroup::Nested_1:0x00000100ad5fd8>
     # ./spec/requests/signup_spec.rb:4:in `block (2 levels) in <top (required)>'

  2) Signup should email confirmation mail after signup
     Failure/Error: user = Factory.build(:user)
     NameError:
       uninitialized constant RSpec::Core::ExampleGroup::Nested_1::Factory
     # ./spec/requests/signup_spec.rb:15:in `block (2 levels) in <top (required)>'

Иногда они работают, а иногда не работают .. Я не знаю почему ..

Можете ли вы помочь мне?

РЕДАКТИРОВАТЬ: Я использую следующие версии:

  • ruby ​​1.9.2-p290
  • рельсы 3.1.rc4
  • rspec (2.6.0)
  • rspec-rails (2.6.1)
  • factory_girl (2.0.0.rc4)
  • factory_girl_rails (1.1.rc1)

И, как вы можете видеть, маршруты тоже не работают: new_user_path не найден ...?

И это моя спецификация запроса:

# -*- encoding : utf-8 -*-
describe "Signup" do
  it "does not email confirmation mail after signup" do
    visit new_user_path
    fill_in 'user_unconfirmed_email', :with => 'none@example.net'
    fill_in 'user_password', :with => ''
    fill_in 'user_password_confirmation', :with => ''
    click_button "Create User"
    current_path.should eq(user_path)
    page.should have_content("is too short")
    last_email.should be_nil
  end

  it "should email confirmation mail after signup" do
    user = Factory.build(:user)
    visit root_path
    fill_in 'user_unconfirmed_email', :with => user.unconfirmed_email
    fill_in 'user_password', :with => user.unconfirmed_email
    fill_in 'user_password_confirmation', :with => user.unconfirmed_email
    click_button "Create User"
    current_path.should eq(root_path)
    page.should have_content("You successfully signed up! An email with your activation link was sent to your mail address.")
    last_email.to.should include(user.unconfirmed_email)
    last_email.body.should include(user.email_confirmation_key)
    open_email(user.unconfirmed_email)
    click_first_link_in_email # email spec
    current_path.should eq(new_user_path)
    page.should have_content "Your email was successfully confirmed. You are now able to log in with it!"
  end
end

Ответы [ 3 ]

19 голосов
/ 25 июля 2011

Argh ... нашел решение .. Я забыл включить

require 'spec_helper.rb'

в мои спецификации ...

2 голосов
/ 16 ноября 2011

У меня была точно такая же проблема, но в моем случае я забыл перезапустить Spork.

Spork - это драгоценный камень, который значительно сокращает продолжительность теста с помощью rspec.Рекомендуется!

1 голос
/ 02 сентября 2012

У меня была такая же проблема, но в моем случае моя спецификация по ошибке была в спецификации / моделях, тогда как в спецификации / запросах она должна была быть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...