Integration_sign_up в железнодорожном отделении. Упражнения главы 9 не работают

StackOverflow https://stackoverflow.com/questions/8854919

Вопрос

Я изучаю Rais из учебной книги Rails: http://ruby.railstutorial.org/chapters/sign-in-sign-out#fnref:9.14

Я работаю над упражнением. Назначение состоит в том, чтобы создать метод знака в Herper, чтобы его можно было использовать в интеграционных тестах. Он уже дал код:

def integration_sign_in(user)
    visit signin_path
    fill_in :email,    :with => user.email
    fill_in :password, :with => user.password
    click_button
  end

Итак, в моем тестировании интеграции Mayout_links_spec.rb я планирую его использовать.

before(:each) do
      @user = Factory(:user)
      visit signin_path
      fill_in :email,    :with => @user.email
      fill_in :password, :with => @user.password
      click_button
      # integration_sign_in(Factory(:user))
    end

Я все комментирую и использую integration_sign_in(Factory(:user)). Анкет Ошибка, которую я получаю

ActiveRecord::RecordInvalid:
       Validation failed: Email has already been taken

Однако, если я использую оригинал, который выглядит так похожим на функцию Integration_sign_in, тестирование проходит. Может ли кто -нибудь дать объяснение, пожалуйста?

Спасибо.

Это было полезно?

Решение

Похоже, ваша: пользовательская фабрика возвращает один и тот же адрес электронной почты каждый раз, когда он делает пользователя. Потому что у вас есть до (: каждый), он будет создавать и заполнять в БД более одного пользователя, и все они будут иметь одинаковое электронное письмо.

Если вы опубликуете свою фабрику, мы, вероятно, сможем настроить ее, чтобы использовать последовательность или найти альтернативное решение.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top