@Ciscoridze

Как посчитать протестировать количество строк в таблице?

Добрый день.
Есть код:
<table class="table" id="charges_failed">
    <tr>
      <th>Customer</th>
      <th>Charge Amount</th>
      <th>Date Failed</th>
      <th colspan="3"></th>
    </tr>
    <% @charges_failed.each do |charge| %>
      <tr bgcolor="#FF0000">
        <td><%= charge.formatted_customer_name %></td>
        <td><%= number_to_currency(charge.amount.to_s) %></td>
        <td><%= charge.created_at.strftime("%d/%m/%Y") %></td>
      </tr>
    <% end %>
  </table>


Он выводит 5 строк.
Есть тест, который должен сравнить кол-во строк с пятью:
it "check failed charges" do
    visit root_path
    expect(page).to have_selector('table#charges_failed tr', :count => 5)
end


Но тест находит только первую строку (expected to find css "table#charges_failed" 5 times, found 1 match: "Customer Charge Amount Date Failed")

Что не так?
  • Вопрос задан
  • 2361 просмотр
Пригласить эксперта
Ответы на вопрос 1
Jeiwan
@Jeiwan
При разработке и тестировании используются две разные базы данных. То есть в базе для разработки у вас в таблице есть 5 записей, а база для тестирования пустая. Настройки баз данных можно посмотреть в config/database.yml
При тестировании обычно используются фабрики (factories, гем factory_girl), с помощью которых перед каждым тестом база данных заполняется необходимыми записями. В вашем случае перед каждым тестом в тестовой бд нужно создавать 5 записей (можно другое количество, бд для тестирования никогда не совпадает с бд для разработки). Поищите в интернете статьи о тестировании с помощью factory_girl.
Еще у вас не совсем верно написан селектор для тестов, так как он находит заголовок таблицы. Чтобы решить эту проблему, в верстке можно заголовочный ряд таблицы обернуть в тег thead а ряды с данными в тег tbody и добавить tbody в селектор: "table#charges_failed tbody tr".
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы