Ruby 确切参数与Minitest模拟期望匹配?

Ruby 确切参数与Minitest模拟期望匹配?,ruby,mocking,minitest,Ruby,Mocking,Minitest,我正在编写一个小型测试单元测试,需要检查被测代码是否从HTTP响应模拟中提取特定的哈希值。因此,我设定了以下期望: @http_response.expect :[], 3141, [ "X-Pagination-TotalElements" ] @http_response.expect :[], 32, [ "X-Pagination-TotalPages" ] 然而,似乎匹配是基于大小写相等,第二个期望覆盖第一个期望 完成我想做的事情的正确方法是什么 然而,匹配似乎是基于大小写相等[=]

我正在编写一个小型测试单元测试,需要检查被测代码是否从HTTP响应模拟中提取特定的哈希值。因此,我设定了以下期望:

@http_response.expect :[], 3141, [ "X-Pagination-TotalElements" ]
@http_response.expect :[], 32, [ "X-Pagination-TotalPages" ]
然而,似乎匹配是基于大小写相等,第二个期望覆盖第一个期望

完成我想做的事情的正确方法是什么

然而,匹配似乎是基于大小写相等[=]

…对于字符串类,它与
==
相同

第二种期望压倒第一种期望

似乎
expect语句的顺序对于
MiniTest::Mock
对象很重要:

require 'minitest/autorun'

resp = MiniTest::Mock.new
resp.expect :[], 3141, ["X-Pagination-TotalElements"]
resp.expect :[], 32, ["X-Pagination-TotalPages"]

puts resp["X-Pagination-TotalElements"]
puts resp["X-Pagination-TotalPages"]

--output:--
3141
32
Run options: --seed 29457

# Running:

Finished in 0.001500s, 0.0000 runs/s, 0.0000 assertions/s.

0 runs, 0 assertions, 0 failures, 0 errors, 0 skips
但这失败了:

require 'minitest/autorun'

resp = MiniTest::Mock.new
resp.expect :[], 3141, ["X-Pagination-TotalElements"]
resp.expect :[], 32, ["X-Pagination-TotalPages"]

puts resp["X-Pagination-TotalPages"]
puts resp["X-Pagination-TotalElements"]
--输出:--
/Users/7stud/.rvm/gems/ruby-2.1.2/gems/minitest-5.4.0/lib/minitest/mock.rb:148:in
method_missing”:使用意外参数调用模拟方法:[]
[“X-Pagination-TotalPages”](MockExpectationError)from 1.rb:7:in
'

数量也起着作用:

require 'minitest/autorun'

resp = MiniTest::Mock.new
resp.expect :[], 3141, ["X-Pagination-TotalElements"]

puts resp["X-Pagination-TotalElements"]
puts resp["X-Pagination-TotalElements"]
--输出:--
3141

/Users/7stud/.rvm/gems/ruby-2.1.2/gems/minitest-5.4.0/lib/minitest/mock.rb:122:in
method_missing':没有更多可用于[]的预期值:
[“X-Pagination-TotalElements”](MockExpectationError)来自1.rb:7:in
'

因此,其含义如下:

resp.expect :[], 3141, ["X-Pagination-TotalElements"]
resp.expect :[], 32, ["X-Pagination-TotalPages"]
…是:

  • 我希望最初使用键“X-Pagination-TotalElements”调用
    resp[]
    将返回3141

  • 我希望再次使用键“X-Pagination-TotalPages”调用
    resp[]
    将返回32

  • 我预计任何额外的呼叫或不按该顺序的呼叫都将导致失败

  • 完成我想做的事情的正确方法是什么

    按照在代码中调用expect语句的顺序添加它们。

    Ah。我已经使用Mockito(Java)一段时间了,完全忘记了“期望脚本”模型。看起来Minitest就是这么做的。谢谢你的清晰、全面的回答。