0

我遇到了一个令人沮丧的问题,应该是一个非常简单的黄瓜测试。该测试尝试在不输入任何表单数据的情况下提交一个简单的表单,并期望看到一条错误消息:

Given(/^a user visits the account confirmation page$/) do
  visit root_path
end

When(/^the user enters an improperly formatted email address$/) do
  click_button "START"
end

Then(/^the user should see an error message$/) do
  page.should have_selector("error")
end

错误消息元素由 JQuery 附加,并被赋予 css 类“错误”。它附加到的页面中的元素具有 css 类“Forms-TextError”。这个跨度是基本 html 的一部分。

<span id="email_error" class="Forms-TextError">
  <span class="error" for="email">Please provide your contact email</span>
</span>

问题是 have_selector 不会找到错误范围。它也不会找到它的父跨度。有人会认为它适用于这种情况,因为该跨度是基本 html 的一部分。

我究竟做错了什么?

4

1 回答 1

1

问题在于:

page.should have_selector("error")

这一行(或 css 选择器)表示页面应该有一个“错误”类型的元素,这不太可能存在。

您应该将 css-selector 更改为以下之一:

#Find a span with class error:
page.should have_selector("span.error")

#Find any element with class error:
page.should have_selector(".error")
于 2013-05-24T20:00:57.440 回答