Как проверить пользовательский ввод из метода gets в ruby? - PullRequest
0 голосов
/ 13 июля 2010

Скажем, у меня есть следующий метод:

#Create new guest object. Add it to array and save it to disc
  def new_guest
    printf "First name: "
    first_name = gets.chomp
    printf "Last name: "
    last_name = gets.chomp
    printf "Adress: "
    adress = gets.chomp
    printf "Phone:"
    phone = gets.chomp
    new_guest = Guest.new(first_name, last_name, adress, phone)
    @guests.push(new_guest)
    File.open("guests", 'w') {|f| Marshal.dump(@guests, f) }
  end

Как бы я написал для него модульный тест, который может передавать значения для get?Все, что я нашел, было эта статья , но я не знаю, как использовать это в этом случае.Мне также интересно, есть ли хороший способ пометить вещи, которые не должны запускаться при запуске из теста?Например, я не хочу сохранять фиктивные объекты.

1 Ответ

4 голосов
/ 13 июля 2010

Причина, по которой вы пытаетесь протестировать этот метод, состоит в том, что метод делает слишком много.Этот метод собирает входные данные от пользователя, создает новый объект, добавляет запись в список и сохраняет ее на диск.У вас есть пользовательский интерфейс, доступ к данным и персистентность объектов, заключенные в один метод.

Попробуйте разделить метод на более мелкие методы, а затем протестировать их по отдельности.По крайней мере, у вас может быть 2 метода:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...