Методы в моем классе:
def get_class_info
@class_name = get_class_name
end
def get_class_name
puts "Enter the name for your class. Enter 'done' to return to the main prompt."
input = gets.chomp
if input.valid_class_name?
class_name = input.titleize
elsif input.downcase == "done"
run
else
puts "Invalid class name."
get_class_name
end
class_name
end
Мой тест:
it "stores the name in the @class_name property" do
expect(cli.class_name).to eq('Song')
allow(cli).to receive(:gets) {'song'}
cli.get_class_info
end
Он проваливается, говоря, что ожидал «Песню», но получил ноль.Если я закомментирую ожидаемую строку и добавлю pry в конец теста, запрос cli.class_name
возвращает "Song"
!!!
Почему этот тест не пройден ??
Обновление:Хорошо, перемещение линии expect
в основание теста, по-видимому, решило ее.Но я запутался, потому что обычно ожидание идет до фактического вызова метода.Я ошибся?Что мне здесь не хватает?