Внезапный сбой теста создания пользователя / входа в систему, но отлично работает в рабочей среде

#ruby-on-rails #rspec

#ruby-on-rails #rspec

Вопрос:

Пара тестов, которые у меня есть, внезапно терпят неудачу, и я не уверен, почему. Вот мои тесты, которые терпят неудачу:

 Failures:

  1) Users signup success should make a new user
     Failure/Error: response.should render_template('users/show')
       Expected block to return true value.
     # ./spec/requests/users_spec.rb:33:in `block (5 levels) in <top (required)>'
     # ./spec/requests/users_spec.rb:26:in `block (4 levels) in <top (required)>'

  2) Users sign in/out success should sign a user in and out
     Failure/Error: controller.should be_signed_in
       expected signed_in? to return true, got false
     # ./spec/requests/users_spec.rb:67:in `block (4 levels) in <top (required)>'
  

И вот тесты:

 it "should make a new user" do
        lambda do
          visit signup_path
          fill_in "Name", :with => "Example User"
          fill_in "Email", :with => "user@example.com"
          fill_in "Password", :with => "foobar"
          fill_in "Confirmation", :with => "foobar"
          click_button
          response.should render_template('users/show')
        end.should change(User, :count).by(1)
      end

describe "success" do
      it "should sign a user in and out" do
        user = Factory(:user)
        visit signin_path
        fill_in "Email",    :with => user.email
        fill_in "Password", :with => user.password
        click_button
        controller.should be_signed_in
        click_link "Sign out"
        controller.should_not be_signed_in
      end
    end
  

Дело в том, что он проходил раньше, и единственное, что я сделал, это изменил тему (css) моего приложения. Я дважды проверил это в рабочей среде, и это работает отлично. Пользователь действительно входит в систему / выходит, и он создается. Сбой только в тестировании. Почему это может быть?

Ответ №1:

Есть ли у вас какое-либо ограничение уникальности в таблице users? Поскольку вы не используете там фабрику, возможно, вы пытаетесь создать пользователя, который уже есть в вашей БД

Комментарии:

1. У меня есть ограничение уникальности, но я только что проверил свою базу данных, и она пуста, так что это не должно быть проблемой.

2. Что происходит, когда вы запускаете приложение локально и пытаетесь выполнить вход?