Chcę przetestować, czy funkcja prawidłowo wywołuje inne funkcje z minimalną Ruby, ale nie mogę znaleźć odpowiedniego assert
do testowania z doc.Jak stwierdzić, że pewna metoda jest wywoływana za pomocą frameworka ruby minitest?
class SomeClass
def invoke_function(name)
name == "right" ? right() : wrong()
end
def right
#...
end
def wrong
#...
end
end
Kod testu:
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
Na betonowej wersji obiektu, nie ma 'must_send' uwagę przy użyciu' MiniTest/spec' – Frost
Powiedz mi jeśli czegoś brakuje, ale myślę, że odpowiedź @ jing-li poniżej jest poprawna we wspomnianiu, że "assert_send" nie jest tutaj odpowiednie. OP chce przetestować, czy 'right' jest wywoływane, gdy wywoływana jest' invoke_function'. Dodatkowo, 'obj.verify' jest potrzebne, aby zapewnić, że' right' jest wywoływane na symulowanym obiekcie w pierwszej części tej odpowiedzi. Każdemu, kto to czyta, upewnij się, że testy zakończą się niepowodzeniem, zanim je przejdziesz. – monozok
Myślę, że używanie assert_send nie jest bezpiecznym wyborem. zgodnie z dokumentacją: http://ruby-doc.org/stdlib-2.0.0/libdoc/minitest/rdoc/MiniTest/Assertions.html#method-i-assert_send –