Зарегистрировать пользователя, а затем посетить страницу аккаунта с системными тестами?
Если я правильно понял, создание пользователя в форме, подобной приведенной ниже, не создает запись в базе данных.
Я хочу создать системный тест, чтобы выполнить следующие действия:
1. Зарегистрируйтесь в форме
2. Посетите страницы аккаунта
3. Обновить информацию об учетной записи
Какая техника позволила бы выполнить вышеописанный сценарий?
within 'form#t-signup-form' do
fill_in 'first_name', with: 'Eve'
fill_in 'last_name', with: 'Farmer'
fill_in 'email', with: 'eve@example.com'
fill_in 'password', with: 'Something'
find('button').click
end
1 ответ
Независимо от того, действительно ли запись пользователя зафиксирована в базе данных, зависит от того, используете ли вы транзакционное тестирование. Если вы используете транзакционное тестирование, то запись фактически никогда не фиксируется, но это не должно иметь значения, потому что (если настроено правильно) все в вашем тесте и приложении должны получать доступ к одной и той же транзакции перед фиксацией и, следовательно, видеть запись. Чтобы сделать то, что вы просите, вы бы просто сделали
visit signup_path #whatever is the correct route to the page with the signup form
within '#t-signup-form' do
fill_in 'first_name', with: 'Eve'
fill_in 'last_name', with: 'Farmer'
fill_in 'email', with: 'eve@example.com'
fill_in 'password', with: 'Something'
find('button').click
end
assert_content('You are signed up!') # assert for visible change in page that indicates signup has succeeded
visit account_path # route to whatever page you want to go to
... # do whatever actions are required to update the account