Ruby on rails 测试缓动特性(轨道)
我在测试“参数化”特性时遇到问题。基本上,我想做的是我下面所说的Ruby on rails 测试缓动特性(轨道),ruby-on-rails,rspec,Ruby On Rails,Rspec,我在测试“参数化”特性时遇到问题。基本上,我想做的是我下面所说的 'Murtis Smith'.parameterize 'murtis-smith' 只有在我使用的这个实例中,我才被允许创建它作为验证。通过添加“slug true”,它负责“参数化”工作 validates :name, allow_nil: true, slug: true 我的问题是,我很难将其设置为模型规范。下面是我的第一种方法。测试仍然失败,只返回“murtis smith”,而不是我希望的“murtis smit
'Murtis Smith'.parameterize
'murtis-smith'
只有在我使用的这个实例中,我才被允许创建它作为验证。通过添加“slug true”,它负责“参数化”工作
validates :name, allow_nil: true, slug: true
我的问题是,我很难将其设置为模型规范。下面是我的第一种方法。测试仍然失败,只返回“murtis smith”,而不是我希望的“murtis smith”。有人知道我如何测试这个吗?(还是最好避免使用此宝石?)
测试仍然失败,只返回“murtis smith”,而不是我希望的“murtis smith”
你为什么希望这个名字变成“默蒂斯·史密斯”?它是验证器,不是转换器/变压器。这是它应该做的
:
此外,您的规范中还有一个隐藏的故障。请尝试player.save代码>您将看到
测试仍然失败,只返回“murtis smith”,而不是我希望的“murtis smith”
你为什么希望这个名字变成“默蒂斯·史密斯”?它是验证器,不是转换器/变压器。这是它应该做的
:
此外,您的规范中还有一个隐藏的故障。请尝试player.save代码>你会看到的。播放器。name
不是鼻涕虫。因此,使用slug:true
player似乎没有意义。name
不是slug。因此,使用slug:true
似乎没有意义。看起来像是“player.save!”这正是我所缺少的。谢谢你,好先生!看起来像是“球员,救命!”这正是我所缺少的。谢谢你,好先生!
it 'becomes slugish' do
player.name = "murtis smith"
player.save
expect(player.name).to eq 'murtis-smith'
end
def validate_each(record, attribute, value)
if value.nil?
record.errors.add(attribute, :blank)
elsif value != value.parameterize
record.errors.add(attribute)
end
end