如何创建 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/ }
我正在尝试测试电子邮件验证模式,为此我创建了一个包含所有无效电子邮件的数组并尝试使用 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/ }