0 votes

Comment puis-je tester l'entrée de l'utilisateur à partir de la méthode gets en ruby ?

Disons que j'ai la méthode suivante :

#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

Comment puis-je écrire un test unitaire pour ce test qui peut passer dans les valeurs pour le gets ? Tout ce que j'ai trouvé, c'est cet article mais je ne sais pas comment l'utiliser dans ce cas. Je me demande également s'il existe un bon moyen de marquer les choses qui ne doivent pas être exécutées lorsqu'elles le sont à partir d'un test ? Je pourrais ne pas vouloir enregistrer les objets factices par exemple.

4voto

Steve Weet Points 15395

Si vous avez du mal à tester cette méthode, c'est parce qu'elle en fait trop. Cette méthode collecte les données de l'utilisateur, crée un nouvel objet, ajoute l'enregistrement à une liste et le sauvegarde sur le disque. L'interface utilisateur, l'accès aux données et la persistance des objets sont réunis dans une seule méthode.

Essayez de diviser la méthode en plusieurs méthodes plus petites, puis testez-les individuellement. Au minimum, vous pourriez avoir 2 méthodes comme suit :-.

def new_guest(first_name, last_name, address, phone)
  guest = Guest.new(first_name, last_name, address, phone)
  @guests.push(new_guest)
  File.open("guests", 'w') {|f| Marshal.dump(@guests, f) }
end

def get_guest_data()
   printf "First name: "
    first_name = gets.chomp
    printf "Last name: "
    last_name = gets.chomp
    printf "Adress: "
    adress = gets.chomp
    printf "Phone:"
    phone = gets.chomp
    [ first_name, last_name, address, phone]
end

Ensuite, dans votre test unitaire, vous pouvez tester new_guest en passant les valeurs générées dans vos cas de test.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X