编写水豚期望以验证 phone 个数字

Writing Capybara expectations to verify phone numbers

我正在使用 AWS Textract 从 PDF 文档中提取信息。在扫描的文本从 AWS 返回并保存到 var 后,我正在这样做:

phone_number = '(555) 123-4567'

scanned_pdf_text.should have_text phone_number

但是由于 AWS 返回扫描的 PDF 文本的不确定方式,这大约有 20% 的时间失败。有时,phone 数字可能以以下两种方式之一出现:

(555)123-4567(555) 123-4567

有些扫描的文本非常大,如果可以避免的话,我宁愿不对返回的文本进行清理(我也不擅长使用正则表达式)。我还认为使用 or 逻辑来处理这两种情况似乎有点笨拙,只是为了检查如此相似的文本(并且与人眼明显接近)。

是否有 rspec 匹配器可以让我检查此文本?我也在使用 Capybara.default_normalize_ws = true,但在这种情况下似乎没有帮助。

假设 scanned_pdf_text 是一个字符串,您看到的唯一区别是空格,那么您可以去掉空格并比较

scanned_pdf_text.gsub(/\s+/, '').should eq('(555)123-4567') # exact

scanned_pdf_text.gsub(/\s+/, '').should match('(555)123-4567') # partial

scanned_pdf_text.gsub(/\s+/, '').should have_text('(555)123-4567') # partial