【问题标题】:Multiple invocations of same method on a mock with minitest使用 minitest 在模拟上多次调用同一方法
【发布时间】:2014-11-07 16:59:59
【问题描述】:

我正在使用带有 Ruby 1.9.3 的 minitest 版本 如何使用它测试模拟的多次调用?我需要类似的东西

mockObject.expect.times(2) :method, [return_1 first time, return_2 second time] 
mockObject.verify

有没有办法做到这一点?

【问题讨论】:

    标签: ruby-on-rails ruby mocking minitest


    【解决方案1】:

    每次调用该方法时都需要调用expect。

    mockObject.expect :method, return_1, [first, time, args]
    mockObject.expect :method, return_2, [second, time, args]
    
    # run your code using the mock object
    
    mockObject.verify
    

    【讨论】:

    • 这实际上不起作用。我得到一个MockExpectationError,上面写着expected{:retval => return_2, :args => [second, time, args]}, got [{:retval => return_1, :args => [first, time, args]}, {:retval => return_2, :args => [second, time, args]}] 据我了解,如果我多次模拟相同的方法,最后一个“预期”将获胜,其余的将被忽略。 Ruby 1.9.3 中的 minitest 版本可能有问题?
    【解决方案2】:

    不幸的是,我的 minitest 版本较旧。仅自此提交以来才支持此功能。 https://github.com/seattlerb/minitest/commit/7a6f1818877c6c8a83a0e6680d5fc23ec32fa633#diff-00a18d559ad9a1e984068e38e5009047

    【讨论】:

    • 不幸的是,您使用的是 Minitest :(
    • 这个库需要下网。为了测试非常基本的东西,我花了将近两天的时间来解决多个问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-02-17
    • 2012-05-14
    • 1970-01-01
    • 1970-01-01
    • 2022-01-04
    • 2017-03-01
    • 1970-01-01
    相关资源
    最近更新 更多