【发布时间】:2015-05-25 15:36:36
【问题描述】:
有什么方法可以验证一个从未调用过或只调用过多次使用 Minitest::Mock 的方法
提前致谢
【问题讨论】:
-
考虑将TracePoint 类与
:callevent 一起使用。
有什么方法可以验证一个从未调用过或只调用过多次使用 Minitest::Mock 的方法
提前致谢
【问题讨论】:
:callevent 一起使用。
具体次数:
Minitest::Mock 强制开发人员明确消息期望,因此如果您希望给定方法被调用x 次,您需要非常明确地说明它。
my_mock = Minitest::Mock.new
x.times { my_mock.expect :some_method, :return_val }
从未打电话: 从哲学上讲,Minitest 避免测试没有发生的事情。虽然它并不完全相似,但请查看this post 或谷歌“minitest assert nothing raise”。
Minitest::Mock 会在每次调用意外方法时引发NoMethodError。这并不完全是一个断言,但可能具有预期的效果。尽管如此,你并不特别需要一个模拟来做你所要求的。你可以通过修补你的真实对象实例来做同样的事情。
def test_string_size_never_called
str = "foo"
def str.size
raise NoMethodError, "unexpected call"
end
# test logic continues...
end
【讨论】: