[RUBY] Schreiben Sie einen Test, indem Sie die Geschichte von Mr. Nabeats in der Welt mit Rubin umsetzen

Warum ich mich dazu entschlossen habe

Spezifikation

――Zunächst: "Ich werde etwas Interessantes machen, das heißt etwas Lustiges."

Erstens die Implementierung

omoro.rb


TSUJO_KAO_MOJI = "(・`ω ・ ´)" #Normal
AHO_KAO_MOJI = "ʅ( ՞ਊ՞)ʃ≡" #Ich werde dumm sein
DOG_KAO_MOJI = "∪ ・ ω ・ ∪" #Inus Absicht

puts 'Ich werde etwas Interessantes machen, das heißt etwas Lustiges'

(1..40).each do |figure|
  sleep 0.5
  
  if figure % 5 == 0
    puts figure.to_s + DOG_KAO_MOJI
    next
  end

  if figure % 3 == 0
    puts figure.to_s + AHO_KAO_MOJI
    next
  end

  if /3/ =~ figure.to_s
    puts figure.to_s + AHO_KAO_MOJI
    next
  end
  
  puts figure.to_s + TSUJO_KAO_MOJI
end

puts 'Morgen'

ruby omoro.Laufen Sie auf rb



```Ich werde etwas Interessantes machen, das heißt etwas Lustiges
1(・`ω ・ ´)
2(・`ω ・ ´)
3ʅ( ՞ਊ՞)ʃ≡
4(・`ω ・ ´)
5∪ ・ ω ・ ∪
6ʅ( ՞ਊ՞)ʃ≡
7(・`ω ・ ´)
8(・`ω ・ ´)
9ʅ( ՞ਊ՞)ʃ≡
10∪ ・ ω ・ ∪
11(・`ω ・ ´)
12ʅ( ՞ਊ՞)ʃ≡
13ʅ( ՞ਊ՞)ʃ≡
14(・`ω ・ ´)
15∪ ・ ω ・ ∪
16(・`ω ・ ´)
17(・`ω ・ ´)
18ʅ( ՞ਊ՞)ʃ≡
19(・`ω ・ ´)
20∪ ・ ω ・ ∪
21ʅ( ՞ਊ՞)ʃ≡
22(・`ω ・ ´)
23ʅ( ՞ਊ՞)ʃ≡
24ʅ( ՞ਊ՞)ʃ≡
25∪ ・ ω ・ ∪
26(・`ω ・ ´)
27ʅ( ՞ਊ՞)ʃ≡
28(・`ω ・ ´)
29(・`ω ・ ´)
30∪ ・ ω ・ ∪
31ʅ( ՞ਊ՞)ʃ≡
32ʅ( ՞ਊ՞)ʃ≡
33ʅ( ՞ਊ՞)ʃ≡
34ʅ( ՞ਊ՞)ʃ≡
35∪ ・ ω ・ ∪
36ʅ( ՞ਊ՞)ʃ≡
37ʅ( ՞ਊ՞)ʃ≡
38ʅ( ՞ਊ՞)ʃ≡
39ʅ( ՞ਊ՞)ʃ≡
40∪ ・ ω ・ ∪
Morgen

erledigt. Damit gibt es jedoch keine Methode, die gesamte Verarbeitung ist gleich und ein Komponententest kann nicht geschrieben werden. Getrennte Methoden nach Verantwortung.

omoro_class.rb


class Omoro
  TSUKAMI = "Ich werde etwas Interessantes machen, das heißt etwas Lustiges"
  OCHI = "Morgen"
  TSUJO_KAO_MOJI = "(・`ω ・ ´)"
  AHO_KAO_MOJI = "ʅ( ՞ਊ՞)ʃ≡"
  DOG_KAO_MOJI = "∪ ・ ω ・ ∪"
  
  #Neta
  def main(max_kazu = 40)
    speak(TSUKAMI)
    
    (1..max_kazu).each do |figure|
      sleep 1
      kao_moji = verification(figure)
      serif = make_serif(figure, kao_moji)
      speak(serif)
    end
    
    speak(OCHI)
  end
  
  #Linien machen
  def make_serif(figure, kao_moji)
    figure.to_s + kao_moji
  end
  
  #zu entscheiden
  def verification(figure)
    if figure % 5 == 0
      return DOG_KAO_MOJI
    end
    
    if figure % 3 == 0 || /3/ =~ figure.to_s
      return AHO_KAO_MOJI
    end
    TSUJO_KAO_MOJI
  end
  
  #sprechen
  def speak(serif)
    puts serif
  end
end
  
omoro = Omoro.new
omoro.main(40)

Morgen ist der Unterricht fertig. Nebenbei können Sie die maximal zu zählende Zahl dynamisch ändern, indem Sie eine beliebige Zahl an die Hauptmethode übergeben. Wenn Sie 400 eingeben, sind Sie ein Narr oder ein Hund von 300 bis 399. Es ist schwer, wenn man menschliche Kraft einsetzt, aber es ist einfach, wenn man sie programmgesteuert schreibt.

Schreiben Sie einen Test. studieren. Ich benutze let nicht, weil ich es nicht gut verstehe. Wenn Sie einen sanften Masakari haben, schreiben Sie bitte ein Beispiel in die Kommentare.

omoro_spec.rb


require 'rspec'
require_relative '../omoro_class'

RSpec.describe Omoro do
    TSUJO_KAO_MOJI = "(・`ω ・ ´)"
    AHO_KAO_MOJI = "ʅ( ՞ਊ՞)ʃ≡"
    DOG_KAO_MOJI = "∪ ・ ω ・ ∪"

  it 'Zahlen(1)+ Gesichtscharakter((・`ω ・ ´))Um die Zeilen von zu generieren' do
    expect(Omoro.new.make_serif(1, TSUJO_KAO_MOJI)).to eq '1(・`ω ・ ´)'
  end

  it 'Zahlen(3)+ Gesichtscharakter(3ʅ( ՞ਊ՞)ʃ≡)Um die Zeilen von zu generieren' do
    expect(Omoro.new.make_serif(3, AHO_KAO_MOJI)).to eq '3ʅ( ՞ਊ՞)ʃ≡'
  end

  it 'Inu' do
    expect(Omoro.new.make_serif(5, DOG_KAO_MOJI)).to eq '5∪ ・ ω ・ ∪'
  end

  it '3 ist beigefügt' do
    expect(Omoro.new.make_serif(33, 'ʅ( ՞ਊ՞)ʃ≡')).to eq '33ʅ( ՞ਊ՞)ʃ≡'
  end

  it 'verification' do
    omoro = Omoro.new
    (1..40).each do |figure|
      if figure % 5 == 0
        expect(omoro.verification(figure)).to eq DOG_KAO_MOJI
      elsif figure % 3 == 0 || /3/ =~ figure.to_s
        expect(omoro.verification(figure)).to eq AHO_KAO_MOJI
      else
        expect(omoro.verification(figure)).to eq TSUJO_KAO_MOJI
      end
    end
  end

  it 'main' do
    omoro = Omoro.new
    expect { omoro.main(5) }.to output(
      "Ich werde etwas Interessantes machen, das heißt etwas Lustiges\n1(・`ω ・ ´)\n2(・`ω ・ ´)\n3ʅ( ՞ਊ՞)ʃ≡\n4(・`ω ・ ´)\n5∪ ・ ω ・ ∪\n Morgen\n").to_stdout
  end
end

Ich persönlich bin der Meinung, dass die Überprüfung und die wichtigsten Methoden verbessert werden können, aber ich wusste nicht, wie ich das machen soll.

Verweise

[Katsura 3 mal \ -Wikipedia](https://ja.wikipedia.org/wiki/%E6%A1%82%E4%B8%89%E5%BA%A6#%E4%B8%96%E7%95% 8C% E3% 81% AE% E3% 83% 8A% E3% 83% 99% E3% 82% A2% E3% 83% 84)

[\ Ruby ] Unit-Test beginnend mit Rspec \ (Unit-Test ) \ | qs Developers

Standardausgabe mit Rspec \ -Qiita testen

Recommended Posts

Schreiben Sie einen Test, indem Sie die Geschichte von Mr. Nabeats in der Welt mit Rubin umsetzen
Implementierung von Poker nach und nach in Ruby Teil 1
Implementierung von Poker nach und nach in Ruby Teil 4
Implementierung von Poker nach und nach in Ruby Teil 3
Schwer in Rubin! ??
Schreiben Sie einen Test, indem Sie die Geschichte von Mr. Nabeats in der Welt mit Rubin umsetzen
Ausgabedreieck in Ruby
Arten von Variablen in Ruby
Schneller Popcount in Ruby
Benennen und rufen Sie in Ruby übergeordnete Klassenmethoden explizit auf
Die Geschichte, einen Reverse-Proxy mit ProxyServlet zu erstellen
Eine Geschichte voller Grundlagen von Spring Boot (gelöst)
Finden Sie mit Kotlin die Anzahl der Tage in einem Monat
Die Geschichte des Refactorings mit einem selbstgemachten Helfer zum ersten Mal in einer Rails-App
Eine Geschichte über das Erreichen der League Of Legends-API mit JAVA
Eine Geschichte, die mit der Einführung von Web Apple Pay zu kämpfen hatte
[Illustration] Finden der Summe von Münzen mit einer rekursiven Funktion [Ruby]
Die Geschichte, ein Projekt zu bauen, das Maven mit Ant gebaut hat
Eine Geschichte, die ich mit der Stream-API von Java8 einem Prozess schreiben wollte, der einer while-Anweisung entspricht
Die Geschichte, zu vergessen, eine Datei in Java zu schließen und zu scheitern
Die Geschichte eines Game Launcher mit automatischer Ladefunktion [Java]
Implementierung von Poker nach und nach in Ruby Teil 2
Implementierung von Poker nach und nach in Ruby Teil 1
Implementierung von Poker nach und nach in Ruby Teil 4
Extrahieren Sie einen Teil einer Zeichenfolge in Ruby
Die Geschichte des Schreibens von Java in Emacs
Schreiben Sie die Bewegung von Rakefile in das Runbook
[Hinweis] [Anfänger] Schreiben, wenn der Wert eines Array-Elements in einem sich wiederholenden Satz von Ruby geändert wird
So erhalten Sie die ID eines Benutzers, der sich in Swift bei Firebase authentifiziert hat
Überprüfen Sie das ID-Token eines von AWS Cognito in Java authentifizierten Benutzers
Ich habe versucht, die Telefonnummer (Festnetz / Mobiltelefon) mit einem regulären Ausdruck in Rails auszudrücken und Validierung und Test zu schreiben
Die Geschichte eines gewöhnlichen Othello in Java
Eine Geschichte über das JDK in der Java 11-Ära
Messen Sie die Größe eines Ordners mit Java
Die Geschichte der Einführung der Ajax-Kommunikation in Ruby
Verwalten Sie die Version von Ruby selbst mit rbenv
Die Geschichte der Optimierung der Android-App mit libGDX
Ich habe die Anzahl der Taxis mit Ruby überprüft
[Jackson] Eine Geschichte über das Konvertieren des Rückgabewerts des Big Decimal-Typs mit einem benutzerdefinierten Serializer.
[Java] Ganzzahlige Informationen von Zeichen in der Textdatei, die mit der Methode read () erfasst wurden
Offline-Echtzeit-Schreibweise Implementierungsbeispiel für das Problem in E05 (Ruby, C11)
Anfordern durch Übergeben eines Arrays an eine Abfrage mit dem HTTP-Client von Ruby
Zählen Sie die Häufigkeit des Auftretens von Wörtern in einem Satz durch Stream-Verarbeitung (Apache Apex).
Eine Überprüfung des von Rails-Anfängern verwendeten Codes
Format der Protokollausgabe von Tomcat selbst in Tomcat 8
[Ruby] Die Rolle von Indizes beim Lernen von Elementen in Arrays
Rufen Sie den Namen des Testfalls in der JUnit-Testklasse ab
[JUnit 5-kompatibel] Schreiben Sie einen Test mit JUnit 5 mit Spring Boot 2.2, 2.3
Berechnen Sie die Differenz zwischen Zahlen in einem Ruby-Array
[Ruby / Rails] Legen Sie einen eindeutigen (eindeutigen) Wert in der Klasse fest
[JUnit 5] Schreiben Sie einen Validierungstest mit Spring Boot! [Parametrisierungstest]
Rufen Sie die URL des HTTP-Umleitungsziels in Ruby ab
Die Geschichte von dto, dao-like mit Java, SQLite
[Ruby] Gewöhnen Sie sich an, beim Erstellen einer Kopie einer Zeichenfolgenvariablen die dup-Methode zu verwenden
Die Geschichte, wie ein Docker-Container mit GitHub-Aktionen in die GitHub-Paketregistrierung und den Docker-Hub verschoben wird
Die Geschichte des Erstellens einer Java-Version des Minecraft-Servers mit GCP (und dem Festlegen einer weißen Liste)
Die Geschichte der Einführung eines sehr Rails-ähnlichen serverlosen Frameworks "Ruby on Jets" in die Produktionsumgebung