Capybara测试页面是否有正则表达式

Mar*_*Pop 18 regex rspec ruby-on-rails capybara

我是RSpec和Capybara的新手,我正在尝试测试页面是否有时间.12:00或14:24或08:12是我想要测试的很好的例子.

我使用以下正则表达式:

/^\d{2}:\d{2}/
Run Code Online (Sandbox Code Playgroud)

我不知道如何在capybara中"短语"以测试该页面是否包含此正则表达式.

khu*_*hka 26

我想是类似的东西

page.text.should match(/^\d{2}:\d{2}/)
Run Code Online (Sandbox Code Playgroud)

或者,使用新的RSpec语法

expect(page.text).to match(/^\d{2}:\d{2}/)
Run Code Online (Sandbox Code Playgroud)

或者你可以测试不是整个页面,而是一些元素,例如

find("span.time").text.should match(/^\d{2}:\d{2}/)
Run Code Online (Sandbox Code Playgroud)

  • 请注意,检索内容然后在结果上使用非水豚匹配器会破坏水豚等待匹配发生的功能。使用此解决方案,您可能会在完成将要查找的文本放入其中的工作之前检索文本。我什至可以说这是水豚的反模式。 (2认同)

Ner*_*ter 13

我不知道这是否是新行为,但您可以使用has_content?:

page.has_content?(/do not have permission/i)

在rspec中,这将是这样的:

expect(page).to have_content(/do not have permission/i)

我发现这个中的水豚在线文档,但它的下has_text?,因为has_content?仅仅是一个别名.