【发布时间】:2019-02-16 21:21:08
【问题描述】:
假设我在 Ruby 中有一个这样的类:
class Test
def execute
count = 0
40.times do
search_for_names(count) do |name, last_name|
yield name, last_name
end
count += 1
end
end
def search_for_names(count)
friend = get_friend_name(count)
yield friend.name, friend.last_name
end
end
我的问题是:如何对我的 search_for_names 方法进行存根以在我的 Rspec 测试中获得 40 个不同的名称? (我安装了 Faker)。 我试过了:
let(:friends) do
described_class.new
end
allow(friends).to receive(:search_for_names).and_yield(
Faker::Name.name,
Faker::Name.last_name
)
it 'finds multiple friends' do
friends.execute do |name, last_name|
puts name
expect(name).not_to be_empty
expect(last_name).not_to be_empty
end
end
但它总是打印相同的名称 x40。
还有……:
allow(friends).to receive(:search_for_names).and_yield(
Faker::Name.name,
Faker::Name.last_name
).and_yield(
Faker::Name.name,
Faker::Name.last_name
)
但它会打印两个不同的名称 x40(80 个名称)。但我只想有40次不同的名字。可能吗 ? 提前致谢!
【问题讨论】:
标签: ruby-on-rails ruby unit-testing rspec yield