Ruby 小型测试:没有更多可用的预期

Ruby 小型测试:没有更多可用的预期,ruby,minitest,Ruby,Minitest,我使用minitest为我的web项目编写测试。 我有一个mock对象,其中有3个mock方法。对象表示具有多个属性的数据库实体(hanami模型)。现在,如果我多次调用一个属性的“getter”,我会得到一个MockExpectationError:属性不再有可用的期望值。 在不创建变量来保存返回数据的情况下,如何处理此问题? 下面是我如何设置此方法的: user_mock = Minitest::Mock.new user_mock.expect :is_allowed?, true, [S

我使用minitest为我的web项目编写测试。
我有一个mock对象,其中有3个mock方法。对象表示具有多个属性的数据库实体(hanami模型)。现在,如果我多次调用一个属性的“getter”,我会得到一个MockExpectationError:属性不再有可用的期望值。
在不创建变量来保存返回数据的情况下,如何处理此问题?
下面是我如何设置此方法的:

user_mock = Minitest::Mock.new
user_mock.expect :is_allowed?, true, [String, String]
user_mock.expect :ad_login, 'somestring'
user_mock.expect :id, 2

只需在您多次调用的函数中再添加一些
expects

说是

user_mock.expect :is_allowed?, true, [String, String]
您可以再添加一些预期,甚至可以在每次调用中更改返回值或预期参数。 因此,如果您想调用它3次,只需再添加2次,您将得到:

user_mock = Minitest::Mock.new
user_mock.expect :is_allowed?, true, [String, String]
user_mock.expect :is_allowed?, false, [String, String]
user_mock.expect :is_allowed?, true, [String, String]
user_mock.expect :ad_login, 'somestring'
user_mock.expect :id, 2

这些值将按照您定义的顺序返回。

似乎您正在设置方法只调用一次的期望值。您应该为多个呼叫设置它。“正好N次”或“至少一次”(任何更适合您的测试的)。我不知道它是如何在minitest中完成的(我是rspec guy),我已经搜索了minitest文档,但我就是找不到如何将该方法设置为多次调用。默认值是1……好吧,也许你应该使用一个更好的测试框架:)有没有办法让
expect
在一次调用中多次可用?