使用Cucumber测试Ruby on Rails嵌套视图

时间:2011-10-18 00:23:50

标签: ruby-on-rails cucumber

我刚刚开始使用Cucumber,我不确定如何测试视图中的部分内容。

这是我的特色
黄瓜: posted.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"


(这是我目前所在的页面)
我的new.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 个答案:

答案 0 :(得分:2)

您不必尝试单独测试部分。 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,标签,名称,元素ID等。