【问题标题】:Testing callbacks with minitest rails使用 minitest rails 测试回调
【发布时间】:2017-01-16 13:03:52
【问题描述】:

我的模型中有一个 before_validation 回调。我无法找到如何在 minitest rails 中为回调编写测试用例。

test 'callback set_slug before_validation' do
  company = Company.new(name: 'test')
  mock_method = MiniTest::Mock.new
  mock_method.expect :set_slug, 'clickapps1'
  company.stub :set_slug, 'clickapps1' do
    company.valid?
  end
  mock_method.verify
end

【问题讨论】:

  • 如果你用谷歌搜索,你可以找到这篇文章:stackoverflow.com/questions/23293021/…
  • 我已经尝试过了,您提到的链接上给出的解决方案不起作用。
  • 如果您可以提供您尝试过的和无效的代码示例,我们可以提供一些建议。
  • 我的公司模型中有一个验证前回调:before_validation :set_slug, unless: :slug 我写的测试用例是:test 'callback set_slug before_validation' do company = Company.new(name: 'test') mock_method = MiniTest::Mock.new mock_method.expect :set_slug, 'clickapps1' company.stub :set_slug, 'clickapps1' do company.valid? end mock_method.verify end

标签: ruby-on-rails minitest


【解决方案1】:

我使用了 mocha gem,然后我的测试用例看起来像:

test 'callback set_slug before_validation' do
  company = Company.new(name: 'test')
  company.expects(:set_slug)
  company.valid?
 end

现在它可以工作了。

【讨论】:

  • 天哪!互联网上到处都是蹩脚的模拟解决方案。这实际上是真实的场景!它就像一个魅力!
  • 是的,不要试图用另一种方式来做这件事。这是迄今为止最简单、最快的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多