如何创建 RSpec 测试以使用所有匹配器测试无效电子邮件数组

How create RSpec test to test an Array of invalid emails using all matcher

我正在尝试测试电子邮件验证模式,为此我创建了一个包含所有无效电子邮件的数组并尝试使用 not_to all 匹配器来测试它。

       context 'when invalid email' do
          let(:invalid_emails) do
            [
              'plainaddress',
              '#@%^%#$@#$@#.com',
              '@example.com',
              'Joe Smith <email@example.com>',
              'email.example.com',
              'email@example@example.com',
              '.email@example.com',
              'email.@example.com',
              'email..email@example.com',
              'あいうえお@example.com',
              'email@example.com (Joe Smith)',
              'email@example',
              'email@-example.com',
              'email@example.web',
              'email@111.222.333.44444',
              'email@example..com',
              'Abc..123@example.com'
            ]
          end
    
          it 'no match' do
            expect(invalid_emails).not_to all(match(helper.html_validation_pattern))
          end
        end

但我收到此错误

 NotImplementedError:
       `expect().not_to all( matcher )` is not supported.

是否存在另一种方法?

您可以将 Array#none? 与正则表达式一起使用

expect(invalid_emails.none?(/regexp/)).to be true

或者只是迭代数组

invalid_emails.each { |email| expect(email).not_to match /regexp/ }