所以我正在用Cucumber做 BDD,并有一个从数据库填充复选框的表单。复选框的标签包含超链接。到目前为止,还不算太奇特(注意,这是HAML而不是 Erb,但它应该对任何 Rails 人来说都足够可读):
I would like my donation to support:
%br
- for podcast in @podcasts
= check_box_tag "donation[podcast_ids][]", podcast.id, true
= donation.label "donation[podcast_ids][]", link_to(podcast.name, podcast.url), :value => podcast.id
%br
问题是在我的 Cucumber 功能中,我不知道如何找到该复选框来检查它。故事的相关部分是这样的:
Scenario: Happy path
Given I am on the home page
When I fill in "My email address" with "john@example.org"
# Skipped for brevity...
And I check the "Escape Pod" podcast
And I check the "PodCastle" podcast
And I press "I'm ready!"
Then I should see "Thank you!"
And there should be 2 podcast donation records
如果我使用的是裸webrat_steps.rb文件,我会收到以下错误:
Could not find field: "Escape Pod" (Webrat::NotFoundError)
我很确定这是因为这种link_to()
方法,我用它来使“Escape Pod”成为指向实际网站的超链接。但是我无法link_to
从我的 Cucumber 步骤轻松访问,而且我无法找出任何合理的方式将 Webrat 指向正确的复选框,除非在我的步骤中拼凑一大堆超链接代码(这使得它非常脆弱)。
我的 BDD 在这一点上停滞不前。我不想仅仅因为它很难测试就删除链接。而且感觉应该不难测试。Webrat 只是限制了我可以传递给该checks()
方法的内容。谁能为此提出一个优雅的答案?