存根实例方法并在 rspec 中返回一系列值的问题

问题描述

我为类 User 存根了一个实例方法并返回值字符串序列。

User.any_instance.stub(:name).and_return('abc','pqr','xyz')

我的代码

users = User.where.not.(phone: nil)
users.each do |user|
    name = user.name
end

对于 name 方法的所有调用,它返回 'abc'。当我尝试在“do”循环中使用“byebug”进行调试并调用方法“name”时,它按顺序返回值。但它在正常情况下无法正常工作。

解决方法

User.any_instance.stub(:name).and_return('abc','pqr','xyz')

仅当在同一实例 name 上多次调用 user 方法时,才会返回不同的值,在您的情况下,name 在 {{1} 的不同实例上调用}},这就是它总是返回 user 的原因。 Specify different return values for multiple calls