测试笨重的特性(导轨)

时间:2018-05-16 15:11:16

标签: ruby-on-rails rspec

我在测试'参数化'特性方面遇到了麻烦。基本上我想要做的就是我下面的内容。

'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

1 个答案:

答案 0 :(得分:2)

  

测试仍然失败,只是返回'murtis smith',而不是我希望成为'murtis-smith'。

为什么你希望这个名字成为“murtis-smith”?它是验证器,而不是转换器/变压器。它可以正常工作。

Source code

  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!即可看到。