我正在经历一个令人沮丧的问题,应该是一个非常简单的黄瓜测试。测试尝试提交一个简单的表单而不输入任何表单数据,并期望看到一条错误消息:
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类'error'。它附加到页面中的元素具有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的一部分。
我做错了什么?
答案 0 :(得分:1)
问题在于:
page.should have_selector("error")
这一行(或css选择器)说该页面应该有一个“error”类型的元素,这个元素不太可能存在。
您应该将css选择器更改为以下之一:
#Find a span with class error:
page.should have_selector("span.error")
#Find any element with class error:
page.should have_selector(".error")