Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rspec/shoulda:测试是否调用了自定义验证器_Ruby On Rails_Rspec_Shoulda - Fatal编程技术网

Ruby on rails Rspec/shoulda:测试是否调用了自定义验证器

Ruby on rails Rspec/shoulda:测试是否调用了自定义验证器,ruby-on-rails,rspec,shoulda,Ruby On Rails,Rspec,Shoulda,我有一个自定义验证器(位于app/validators/uri_validator.rb中),用于: validates :link, uri: true 如何在规格中指定此项 理想情况下,我希望有一个单线电话,例如: it { should validate_uri_of(:link) } 如何执行此操作?使用factory girl构建包含无效数据和有效数据的模型对象,并调用be\u valid matcher #factory girl build(:model, link: vali

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

validates :link, uri: true
如何在规格中指定此项

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

it { should validate_uri_of(:link) }

如何执行此操作?

使用factory girl构建包含无效数据和有效数据的模型对象,并调用be\u valid matcher

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

另一个选项是使用
allow_值
matcher,尽管它并不理想,但在某些情况下可以工作

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

在测试过程中,如果可能,我会尽量不点击数据库。使用factory girl with
build
不会点击数据库,它会创建一个未保存的模型。