Rspec / shoulda:测试,调用自定义验证器

时间:2012-06-12 10:02:57

标签: ruby-on-rails rspec shoulda

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

validates :link, uri: true

如何在我的规格中指定这个?

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

it { should validate_uri_of(:link) }

我该怎么做?

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:2)

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

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