Ich bin neu bei Ruby.
Heute habe ich eine Rechenaufgabe gemacht, die nur "Hello World" ausgibt.
# rake hoge:hello
"Hello World"
Ich wünschte, ich hätte einen Test geschrieben, um zu bestätigen, dass "Hallo" im Ergebnis enthalten war, und es gab eine einfache Möglichkeit zur Suche durch Angabe einer Zeichenfolge. .. ..
hoge_spec.rb
require 'rails_helper'
require 'rake'
RSpec.describe 'Hoge', type: :task do
#Unterlassung
describe 'rake hoge:hello' do
let(:task) { 'hoge:hello' }
context 'Finden Sie die Standardausgabe Hallo' do
it 'Hallo mit Standardausgabe#1 Zeichenfolge im Argument des Ausgabe-Matchers' do
#* Idealer Typ. Es schlägt jedoch fehl, da es nicht genau übereinstimmt. .. ..
expect{ @rake[task].invoke() }.to output('Hello').to_stdout
end
it 'Hallo mit Standardausgabe#2 Regulärer Ausdruck im Argument des Ausgabe-Matchers' do
#* Es funktioniert, aber es ist schwierig, die Übereinstimmung mit regulären Ausdrücken zu verwenden. .. ..
expect{ @rake[task].invoke() }.to output(/Hello/).to_stdout
end
it 'Hallo mit Standardausgabe#Teilweise Übereinstimmung mit 3 gehören' do
#* Es funktioniert, aber der Code ist lang. .. ..
$stdout = StringIO.new
@rake[task].invoke()
output_text = $stdout.string
$stdout = STDOUT
expect(output_text).to include 'Hello'
end
end
end
end
... Ich dachte, es wäre schön, wenn ich eine Zeichenkette (# 1), aber einen Fehler angeben könnte. Die einzige Möglichkeit, diesen Zweck zu erreichen, besteht darin, einen regulären Ausdruck (Nr. 2) zu verwenden oder die Standardausgabe einer Variablen (Nr. 3) zuzuweisen. .. .. Ich frage mich, ob es einen guten Weg gibt.
Recommended Posts