0

在 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 中的下一个元素,看看它是否是一个包含“不能为空白”内容的跨度?

4

1 回答 1

1

我不确定你真的需要这样做。测试用例应该使得页面上只有一条错误消息。您可以使用其他测试来检查多个错误消息,但应该有一个特定于此场景的测试。这样做然后检查 span.error-text 是否在页面上并且它包含文本不能为空白的测试就足够了。

page.should have_selector('span.error-text', text: "can't be blank")
于 2013-03-22T17:54:40.817 回答