Тестирование вложенного представления Ruby on Rails с помощью Cucumber

#ruby-on-rails #cucumber

#ruby-on-rails #cucumber

Вопрос:

Я только начал использовать Cucumber и не уверен, как протестировать часть, которую я имею в представлении.

Вот моя функция
cucumber: публикация.особенность

 Scenario: After having created job posting
  Given I am authenticated as "administrator"
  Given I am on the new posting page
  When I press "Create Posting"
  Then I should see "Back to list of all postings"
  

(Это страница, на которой я сейчас нахожусь)
Мой новый.html.haml

 = link_to 'Logout', logged_out_url(@user)
%h1 New posting
= render 'form'
%br/
= link_to 'Cancel', postings_path
  

(Это представление, которое загружается в new.html.haml, кнопку «создать публикацию» которой я хотел бы протестировать)
_form.html.haml

 = form_for(@postings) do |posting_builder|
    - if @postings.errors.any?
       #error_explanation
         %h2
            = pluralize(@postings.errors.count, "error")
            prohibited this posting from being saved:
         %ul
            - @postings.errors.full_messages.each do |msg|
            %li= msg

.field
   %b= posting_builder.label :title
   %br/
   = posting_builder.text_field :title
.field
   %b= posting_builder.label :description
   %br/
   = posting_builder.text_field :description
.field
   %b= posting_builder.label :requirements
   %br/
   = posting_builder.text_field :requirements
.field
   %b= posting_builder.label :location
   %br/
   = posting_builder.text_field :location
.field
   %b= posting_builder.label :Admin
   %br/
   = select("posting", "user_id", User.order('last_name ASC').collect {|u| [u.fullname, u.id]})

%br/
%br/

/ Submit
.actions
= posting_builder.submit
  

Есть ли какие-либо предложения относительно того, как мне следует решить эту проблему, или ресурсы / примеры, которые имели бы отношение к моему вопросу?

Ответ №1:

Вам не нужно пытаться тестировать partial отдельно. Cucumber не видит части отдельно от главной страницы, он видит полностью отображенную страницу (со всем включенным частичным содержимым). Итак, если вы это сделаете And I should see [the text from the partial] , тогда все в порядке.

Если это не работает, а вы считаете, что должно, то прямо перед And I should see... шагом добавьте шаг с надписью And show me the page , и он откроет ваш браузер по умолчанию и покажет вам, что видит Cucumber. Это может помочь вам выяснить, на какой странице вы на самом деле находитесь, и если она не соответствует тому, что вы ожидаете.

ПРИМЕЧАНИЕ: при использовании вы And show me the page иногда получаете урезанную (без форматирования, без .CSS) версию страницы, поэтому не беспокойтесь, если она совсем не похожа на страницу, которую вы обычно видите при просмотре через браузер. Важно то, что он содержит HTML, метки, имена, идентификаторы элементов и т. Д.