#rspec #capybara #navbar
Вопрос:
У меня есть этот код
require 'rails_helper'
RSpec.describe 'planets features' do
describe 'adding a new planet' do
it 'adds a planet to the list of planets' do
visit planets_path
click_link('List your planet')
expect(current_path).to have_content('/planets/new')
fill_in('Name', with: 'Test')
click_button('Publish')
expect(current_path).to have_content('/planets')
expect(page).to have_content('Test')
end
end
end
Это показывает эту ошибку в терминале:
особенности планет добавление новой планеты добавляет планету в список планет Сбой/ошибка: click_link(«Перечислите свою планету»)
Capybara::ElementNotFound: Unable to find link "List your planet"
The link I want to click is in the navbar.
Here is a part of the code in the navbar with the link 'List your planet'.
<div class="navbar navbar-expand-sm navbar-light navbar-lewagon">
<%= link_to planets_path, class: "navbar-brand" do %>
<p class="navbar-logo"><i class="fas fa-meteor"></i> PIANETA</p>
<% end %>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav mr-auto">
<% if user_signed_in? %>
<%= link_to "List your planet", new_planet_path, class: "btn btn-outline-primary-1 shadow-none focus-none text-decoration-none", type: "button", role: "button" %>
<%= link_to "My Listings", planets_path, class: "btn btn-outline-primary-1 shadow-none focus-none text-decoration-none", type: "button", role: "button" %>
Как мне правильно написать тест, чтобы он нашел ссылку в навигационной панели ?
Ответ №1:
Для меня это выглядит не как ссылка, а как кнопка (в зависимости от имени и типа класса).
Попробуйте click_button('List your planet')
вместо этого
Если это не сработает, попробуйте find('.btn', :text => 'List your planet').click
Ответ №2:
на вашей навигационной панели есть фрагмент кода, который отображает «Список вашей планеты» только в том случае, если пользователи вошли в систему.
Ссылка:
<% if user_signed_in? %>
Вам необходимо проинструктировать свой тест для выполнения операции входа в систему, прежде чем вы перейдете по этому URL-адресу.