with"-6ren"> with"-我有一个带有此验证的用户模型 validates :name, :lastname, :format => {:with => /^[a-zA-Z]+$/, :message => 'Only let-6ren">
gpt4 book ai didi

rspec - 测试 "validates ..., format => with"

转载 作者:行者123 更新时间:2023-12-04 23:24:53 25 4
gpt4 key购买 nike

我有一个带有此验证的用户模型

validates :name, :lastname, :format => {:with => /^[a-zA-Z]+$/, :message => 'Only letters and spaces allowed.'}

我不确定如何正确测试它。

我已经完成了一个函数,它返回一个由 a-zA-z 字符数组中的 10 个字符组成的随机字符串。
def get_random_name
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ".split('').shuffle[0..10].join

结尾
结尾

然后我为每次运行的规范获得一个新名称。

我不想测试它是否使用了一些正则表达式,因为那样我将测试实现而不是行为,而且我也不想只测试一个硬编码案例。

我的问题是:我应该这样做吗?真的需要吗?它是更好还是无用?您知道测试这种验证的更好方法吗?

编辑:另一个问题,如何生成无效的随机名称?有没有办法创建包含至少一个超出允许值的字符的随机名称?我不能硬编码所有无效值的数组来随机化它,因为它太大了

最佳答案

查看开源项目 Shoulda Matchers:
https://github.com/thoughtbot/shoulda-matchers

编辑:抱歉刚刚注意到 Paul Fioravanti也提到了应该。但是,您不需要使用 FactoryGirl 来创建模型的实例。使用 create验证测试不需要。

您可以直接在模型上创建单元测试:


describe User, 'Validations' do
it { should allow_value("Name").for(:name) }
it { should_not allow_value("Inv4lid_").for(:name) }
end

关于rspec - 测试 "validates ..., format => with",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14544628/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com