0

Я пытаюсь пройти тест входа с помощью тестирования интеграции rspec, я установил rspec, и он тоже работает, но он не проходит тест. Код приведен нижеВойдите в систему, используя Rspec + Capybara + Selenium

require 'spec_helper' 

describe "Users" do 
describe "GET /users/sign_in" do 
    it "works! (now write some real specs)", :js => true do 
    visit user_session_path 
    fill_in "Email", :with => "[email protected]" 
    fill_in "Password", :with => "abc123" 
    click_button "Sign in" 
    page.should have_content('Signed in successfully.') 
    end 
end 
end 

Теперь, когда я пытаюсь войти в систему, он терпит неудачу. Я также выполнил команду

rake db:test:prepare 

Я пропустил что-нибудь?

Спасибо заранее!

+1

Добавить еще некоторую информацию, как точное сообщение отказа .. –

+0

он не подведет ... он запускает окно визит Mozilla знак вверх страницы и заполнить п полномочия и он не может войти в систему с этими учетными данными и он не находит текст «Подписано успешно». и дает мне «Failure/Error: page.should have_content (« Подписано успешно ».) ожидал найти текст« Зарегистрировано успешно »в« KOOPERATIONSPLANER Регистрация Войти × Вам нужно войти или зарегистрироваться, прежде чем продолжить. Войти E-mail Пароль Запомнить меня Регистрация Забыли пароль? Не получили подтверждения? Не получили инструкции по разблокировке? « –

+0

», и когда я вхожу в систему с этими учетными данными, он успешно войдет в систему. Я не знаю, что случилось с этим? Есть ли проблема с тестовой базой данных? –

ответ

0

Прежде всего создайте пользователя перед блоком!

Но у меня была проблема, даже когда пользователь был создан. Проблема заключалась в том, что созданный пользователь не видел Devise. Чтобы решить эту проблему, добавьте эти строки в spec_helper

# enable shared connection 
class ActiveRecord::Base 
    mattr_accessor :shared_connection 
    @@shared_connection = nil 

    def self.connection 
    @@shared_connection || retrieve_connection 
    end 
end 

# Forces all threads to share the same connection. This works on 
# Capybara because it starts the web server in a thread. 
ActiveRecord::Base.shared_connection = ActiveRecord::Base.connection 
+0

@gotva .. Спасибо за ваш ответ, но он не работает ... –

+1

1. У вас есть пользователь в БД перед запуском теста? (Согласно опубликованному коду - вы этого не сделали). Перепроверьте его. 2. Используете ли вы gem 'devise' или другой драгоценный камень или собственную систему для аутентификации? – gotva

+0

1. В моей БД разработки у меня есть пользователь, но не в моей тестовой БД. 2. Да, я использую программу. –

0

У меня была такая же проблема 1 час назад. Ниже все работало для меня, если вы не настроили их раньше.

изменить это ниже линии от истинного на ложное в вашем spec_helper.rb

config.use_transactional_fixtures = false 

Следующая добавить этот файл в спецификации/поддержка/database_cleaner.rb

RSpec.configure do |config| 
     config.use_transactional_fixtures = true   #make it false 

     config.before(:suite) do 
     DatabaseCleaner.strategy = :truncation 
    end 

    config.before(:each) do 
     DatabaseCleaner.start 
    end 

    config.after(:each) do 
    DatabaseCleaner.clean 
    end 
end 

Вы имеете очистить вашу базу данных каждый раз, когда вы запускаете тест. Если вы не добавили этот файл, убедитесь, что вы добавили в свой gemfile файл database_cleaner.

gem 'database_cleaner' 
Смежные вопросы