Допустим, у меня есть такой класс в 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, чтобы получить 40 разных имен в моем тесте Rspec?(Я установил фейкер).Я пытался:
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
Но он печатает всегда одно и то же имя х40.
И ...:
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
)
Но он печатает два разных имени х40 (80имена).Но я хотел бы иметь только 40 раз другое имя.Является ли это возможным ?Заранее спасибо!