【发布时间】:2012-09-20 12:55:14
【问题描述】:
我是 RSpec 和 Capybara 的新手,我正在尝试测试页面是否有时间。 12:00 或 14:24 或 08:12 是我要测试的很好的例子。
我正在使用以下正则表达式:
/^\d{2}:\d{2}/
我不确定如何在 capybara 中“表达”来测试页面是否包含此正则表达式。
【问题讨论】:
标签: ruby-on-rails regex rspec capybara
我是 RSpec 和 Capybara 的新手,我正在尝试测试页面是否有时间。 12:00 或 14:24 或 08:12 是我要测试的很好的例子。
我正在使用以下正则表达式:
/^\d{2}:\d{2}/
我不确定如何在 capybara 中“表达”来测试页面是否包含此正则表达式。
【问题讨论】:
标签: ruby-on-rails regex rspec capybara
我猜是这样的
page.text.should match(/^\d{2}:\d{2}/)
或者,使用新的 RSpec 语法
expect(page.text).to match(/^\d{2}:\d{2}/)
或者您可以测试的不是整个页面,而是某个元素,例如
find("span.time").text.should match(/^\d{2}:\d{2}/)
【讨论】:
我不知道这是否是新行为,但您可以使用has_content?:
page.has_content?(/do not have permission/i)
在 rspec 中,应该是这样的:
expect(page).to have_content(/do not have permission/i)
我在online documentation for capybara 中找到了这个,但它在has_text? 下,因为has_content? 只是一个别名。
【讨论】:
have_content 由 has_content 定义,has_text 的别名,它依赖于采用正则表达式的 assert_text。 Ruby 正则表达式引擎确定正则表达式如何匹配某些内容,而不是 capybara 的 DSL。 github.com/jnicklas/capybara/blob/…