I just started using Cucumber and am not sure how to test a partial I have within a view.
Here’s my feature
cucumber: posting.feature
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"
(This is the page I’m currently on)
My new.html.haml
= link_to 'Logout', logged_out_url(@user)
%h1 New posting
= render 'form'
%br/
= link_to 'Cancel', postings_path
(This is the view that is loaded in new.html.haml whose ‘create posting’ button I’d like to test)
_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
Are there any suggestions as to how I should tackle this or resources/examples that would be relevant to my question?
You shouldn’t have to try to test the partial separately. Cucumber doesn’t see partials separately from the main page, it sees the fully rendered page (with all the partial content included). So, if you do
And I should see [the text from the partial]then you’re fine.If that’s not working, and you think it should, then right before the
And I should see...step, add a step that saysAnd show me the page, and it will open your default browser and show you what Cucumber sees. This might help you figure out what page you’re actually on, and if it doesn’t match what you expect.NOTE: When you use
And show me the page, what you get is sometimes a stripped down (no formatting, no .CSS) version of the page, so don’t be concerned it if doesn’t look at all like the page you would normally see when browsing to it via the browser. What’s important is that it contains the HTML, labels, names, IDs of elements, etc.