Voglio verificare se una funzione richiama correttamente altre funzioni con Ruby minitest, ma non riesco a trovare un valore corretto per assert
da doc.Come affermare che determinati metodi vengono chiamati con il framework minitest di Ruby?
class SomeClass
def invoke_function(name)
name == "right" ? right() : wrong()
end
def right
#...
end
def wrong
#...
end
end
Il codice di prova:
describe SomeClass do
it "should invoke right function" do
# assert right() is called
end
it "should invoke other function" do
# assert wrong() is called
end
end
Per la versione oggetto concreto, c'è 'must_send' per quando si utilizza' Minitest/spec' – Frost
Dimmi se mi manca qualcosa ma penso che la risposta di @ jing-li qui sotto sia corretta nel menzionare che "assert_send" non è appropriato qui. L'OP vuole testare che 'right' è chiamato quando viene chiamato' invoke_function'. Inoltre, 'obj.verify' è necessario per assicurare che' right' venga chiamato sull'oggetto mock nella prima parte di questa risposta. Per chiunque stia leggendo questo, assicurati che i tuoi test falliscano prima di farli passare. – monozok
Penso che l'utilizzo di assert_send non sia una scelta sicura. secondo i documenti: http://ruby-doc.org/stdlib-2.0.0/libdoc/minitest/rdoc/MiniTest/Assertions.html#method-i-assert_send –