【问题标题】:Rspec / shoulda: testing, that a custom validator is calledRspec / shoulda:测试,调用自定义验证器
【发布时间】:2012-06-12 10:02:57
【问题描述】:

我有一个自定义验证器(位于 app/validators/uri_validator.rb),用于:

validates :link, uri: true

如何在我的规范中指定这一点?

理想情况下,我希望有一个单线电话,例如:

it { should validate_uri_of(:link) }

我该怎么做?

【问题讨论】:

    标签: ruby-on-rails rspec shoulda


    【解决方案1】:

    另一种选择是使用allow_value 匹配器,虽然并不理想,但它可以在某些情况下工作。

    it { should allow_value(value_which_is_valid).for(:link) }
    it { should_not allow_value(value_which_is_invalid).for(:link) }
    

    【讨论】:

      【解决方案2】:

      使用 factory girl 构建一个包含无效数据和一个包含有效数据的模型对象,并调用 be_valid 匹配器。

      #factory girl
      build(:model, link: valid_uri).should be_valid
      build(:model, link: invalid_uri).should_not be_valid
      

      【讨论】:

      • 我尽量在测试过程中尽可能不打数据库。
      • 使用带有build的工厂女孩​​不会命中数据库,它会创建一个未保存的模型。
      猜你喜欢
      • 2013-09-12
      • 1970-01-01
      • 2014-04-05
      • 1970-01-01
      • 1970-01-01
      • 2014-12-01
      • 2012-11-28
      • 1970-01-01
      • 2013-08-10
      相关资源
      最近更新 更多