Rspec сбой, когда он должен проходить - PullRequest
0 голосов
/ 26 февраля 2011

Когда я запускаю bundle exec rspec spec/, у меня один из моих тестов не пройден и должен пройти. Вот ошибка:

Failure/Error: @user = Factory(:user)
     NoMethodError:
       undefined method `Factory' for #<RSpec::Core::ExampleGroup::Nested_2::Nested_2:0x1037c0a70>
     # ./spec/controllers/users_controller_spec.rb:21

Вот код теста:

  describe "GET 'show'" do

  before(:each) do
    @user = Factory(:user)
  end

  it "should be successful" do
    get :show, :id => @user
    response.should be_success
  end

  it "should find the right user" do
    get :show, :id => @user
    assigns(:user).should == @user
  end
end

Я установил гем Factory Girl, так что я не уверен, в чем проблема.

Ответы [ 4 ]

0 голосов
/ 21 марта 2013

Я думаю, что это правильное решение:

  @user = Factory(:user)

Заменить на

  @user = Factory.create(:user)
0 голосов
/ 26 февраля 2011

Это может быть не так, но вы пытались перезапустить веб-сервер?

0 голосов
/ 15 августа 2012

Ответы в этом мне не помогли. Что я нашел, чтобы решить мою проблему, так это добавить строку в spec_helper.rb

require 'factory_girl'
RSpec.configure do |config|
  config.include FactoryGirl::Syntax::Methods
end

Тогда в моей спецификации я бы назвал это так

person = build(:person)

Надеюсь, это кому-нибудь поможет. Искал около 3 часов.

0 голосов
/ 26 февраля 2011

Вы говорите, что установили factory_girl, но есть ли это в ваших Gemfile и Gemfile.lock файлах?(Вам может понадобиться bundle install, чтобы получить его в Gemfile.lock).Поскольку вы используете bundle exec, bundler проверит ваш Gemfile.lock на драгоценные камни, которые он должен загрузить.

[Edit]

Если подумать, это выглядит как дубликат этого вопроса SO .

...