如何通过RSPEC测试正则表达式验证?

时间:2017-05-23 16:58:39

标签: ruby-on-rails validation rspec

这是带有验证的Consumer类

df[~df.num.str.match('^\-?(\d*\.?\d+|\d+\.?\d*)$')]

  N-D     num unit
4  Q5  sum(d)   UD

这是我用来测试消费者电子邮件是否采用有效格式但我收到错误的原因。除了这种方法之外,还有更好的方法来测试正则表达式吗?

class Consumer < ActiveRecord::Base

    validates :email, format: { with: /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\z/i, on: :create, message: 'invalid email format'}, length: { maximum: 256 }

1 个答案:

答案 0 :(得分:1)

如果您保证Consumer对象的所有其他值都有效,则可以简化测试。

例如,假设您的Customeremailpasswordnamelast_name;然后你可以这样测试:

it 'email with invalid format is invalid' do
  consumer = Consumer.new(email: 'bugs', password: '12345', name: 'John', last_name: 'Doe')
  expect(consumer.valid?).to be(false)
end

在此示例中,所有属性都是正确的,email除外,因此仅检查valid?是否返回false就足够了。