在Capybara + Webkit + Ruby 1.9.3中,我有以下HTML
当特定字段出现错误时,simple_form会生成以下内容。我无法“了解”错误文本范围并且知道我肯定有一个与“标题”相关联的那个而不是另一个可能也有错误的字段。
<div class="input-wrapper string required error">
<div class="input-label">
<label class="string required" for="event_title">
<abbr title="required">*</abbr>
Title
</label>
<span class="error-text">can't be blank</span>
<input id="event_title" class="string required" type="text" value="" size="50" name="event[title]">
</div>
(当然还有很多其他领域!)
我想测试Title实际上是必需的,当用户留空并单击提交按钮时,会出现错误消息“不能为空”。如果没有调整simple_form以包装整个事物,是否有办法简单地找到标签,然后转到DOM中的下一个元素,看看它是否具有“不能为空”的内容?
答案 0 :(得分:1)
我不确定你真的需要那样做。测试用例应该在页面上只有一条错误消息。您可以使用其他测试来检查多个错误消息,但应该有一个特定于此方案的测试。然后执行该操作以检查span.error文本是否在页面上并且包含文本不能为空的测试应该就足够了。
page.should have_selector('span.error-text', text: "can't be blank")