Sono nuovo di minitest e ancora nuovo di ruby e davvero stanco di provare a google questa domanda senza risultato. Sarei davvero grato per l'aiuto:Ruby minitest assert_output syntax
Qual è la sintassi esatta di assert_output in ruby minitest?
Tutto ciò che trovo su github o altrove sembra utilizzare le parentesi. Tuttavia, ricevo un messaggio di errore quando non uso un blocco con assert_output, il che ha senso in quanto la definizione di questo metodo contiene una dichiarazione di rendimento.
Ma non riesco a farlo funzionare, qualunque cosa provi.
testclass.rb
class TestClass
def output
puts 'hey'
end
end
test_test.rb
require 'minitest/spec'
require 'minitest/autorun'
require_relative 'testclass'
class TestTestClass < MiniTest::Unit::TestCase
def setup
@test = TestClass.new
end
def output_produces_output
assert_output(stdout = 'hey') { @test.output}
end
end
Quello che ottengo è:
test finiti in 0.000000s, NaN Test/s, le affermazioni NaN
0 test, 0 asserzioni, 0 errori, 0 errori, 0 salti
Cosa sto sbagliando? Deve essere qualcosa di totalmente ovvio, ma non riesco a capirlo. Grazie per il vostro aiuto.
GRAZIE !! Quindi il nome del metodo non iniziava con 'test' e stavo interrogando la sintassi. Grazie per avermi risparmiato di cercare più a lungo sulla domanda sbagliata. – enahel
Un'altra domanda: l'esempio funziona nel modo in cui lo hai scritto con regex, funziona anche nel modo in cui l'ho scritto con stdout = 'hey'. Non funziona con solo assert_output ('hey') senza 'stdout ='. Perché? – enahel
E - infine - perché posso avere più asserzioni che corse in minitest? Nel mio esempio attuale c'è un solo test, dice "1 corre, 2 asserzioni". (BTW Posso sopprimere l'output stdout effettivo del metodo durante il test per avere il prompt dei comandi più leggibile?) – enahel