【问题标题】:How to specify function for stub when using minitest mocha?使用 minitest mocha 时如何为存根指定函数?
【发布时间】:2019-05-30 09:56:07
【问题描述】:

是否可以在以下示例中指定引发哪个find_by! 异常(我希望引发第二个,而不是第一个):

def self.test
  Instance.stubs(:find_by!).raises(ActiveRecord::RecordNotFound)

  begin
    function_one
  rescue ActiveRecord::RecordNotFound
    puts 'Failure'
  end

  begin
    function_two
  rescue ActiveRecord::RecordNotFound
    puts 'Success'
  end
end

def self.function_one
  Model.find_by!(id: 1)
end

def self.function_two
  Model.find_by!(id: 1)
end

*假设id: 1 不存在。与示例一样,也假设这些将是静态类函数,但请提及添加 any_instance 的情况下的任何差异对于实例方法来说是不够的。

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-5 minitest


    【解决方案1】:

    这个怎么样?

    Instance.stubs(:find_by!).returns('result').then.raises(ActiveRecord::RecordNotFound)
    

    【讨论】:

    • 这似乎是一种解决方法,不是吗?我想在大多数情况下都能获得良好的代码覆盖率,它们会提供类似expects(:function_two).stubs(:find_by!).raises(ActiveRecord::RecordNotFound) 的东西。我想做的事情不标准还是奇怪?我们如何在救援中使用puts 'Success' 测试线路?这是我必须重新编写代码以使其可测试的情况吗?
    • 在这个例子中,很难理解你要在那里测试什么。也许您可以发布您想要测试的实际功能,以便更容易提出建议?
    • 我特别拥有的代码只会混淆我担心的事情并且太长(展开)而不能简洁。这个例子是我能提供的最好的表示。这似乎不是一个疯狂的用例。
    猜你喜欢
    • 1970-01-01
    • 2014-12-28
    • 1970-01-01
    • 2013-12-03
    • 2016-01-21
    • 2015-10-14
    • 2019-01-03
    • 1970-01-01
    • 2019-10-13
    相关资源
    最近更新 更多