【发布时间】:2015-03-26 05:58:50
【问题描述】:
我想为类的每个实例模拟一个方法。 如果我allow_any_instance_of 那么如果instance_count = 1 效果很好
但是,如果我有许多同一个类的实例,则第二个实例不会被模拟捕获。
我正在尝试从不同的站点获取一堆令牌。但在测试期间,我真的不需要“真正的”令牌。所以我打算模拟 get_token 以返回'1111'。
class Foo
def children
[Bar.new, Bar.new] #....
end
def get_tokens
children.map(&:get_token) || []
end
end
那么现在我如何不模拟 get_tokens?
【问题讨论】:
-
你能通过在
children方法中使用x.times.map { double('Bar', get_token: '1111') }来简化任务吗?否则你将不得不使用元编程来创建allow_any_instance_of模拟
标签: ruby-on-rails ruby testing rspec mocking