我在测试'参数化'特性方面遇到了麻烦。基本上我想要做的就是我下面的内容。
'Murtis Smith'.parameterize
'murtis-smith'
仅在此实例中我使用this gem here,因此我可以将其创建为验证。通过添加'slug true',它可以处理'参数化'工作。
validates :name, allow_nil: true, slug: true
我的问题是,我无法将其设置为型号规格。我下面的内容是我的第一个方法。测试仍然失败,只是返回'murtis smith'而不是我希望成为'murtis-smith'。有人会对我如何测试这个有任何想法吗? (或者避免使用这个宝石更好吗?)
it 'becomes slugish' do
player.name = "murtis smith"
player.save
expect(player.name).to eq 'murtis-smith'
end
答案 0 :(得分:2)
测试仍然失败,只是返回'murtis smith',而不是我希望成为'murtis-smith'。
为什么你希望这个名字成为“murtis-smith”?它是验证器,而不是转换器/变压器。它可以正常工作。
def validate_each(record, attribute, value)
if value.nil?
record.errors.add(attribute, :blank)
elsif value != value.parameterize
record.errors.add(attribute)
end
end
此外,您的规范中存在隐藏的故障。试试player.save!
即可看到。