Minitest 模拟不处理命名参数

问题描述 投票:0回答:1

我有一行代码:

@coverage_class.where(original_id: coverage.id, waiting_for_doc_requests: false)

我的单元测试正在执行以下期望:

mock = Minitest::Mock.new
mock.expect(:where, :results, [{ original_id: :id, waiting_for_doc_requests: false }])

运行单元测试时出现以下错误:

Minitest::UnexpectedError: ArgumentError: mocked method :where expects 1 arguments, got []

参数数组不接受哈希作为参数。 我所有其他不使用命名参数的调用都可以正常工作。

这肯定不是 Minitest 的限制吗? 如今,Ruby 中的命名参数非常常见。

如有任何帮助,我们将不胜感激!

ruby-on-rails ruby-on-rails-5 minitest
1个回答
0
投票

expect
的方法签名是:

def expect name, retval, args = [], **kwargs, &blk

文档源代码

所以你可以改变你的期望

mock.expect(:where, :results, original_id: :id, waiting_for_doc_requests: false)
© www.soinside.com 2019 - 2024. All rights reserved.