Ich versuche ein paar Tests zu lernen und stolperte über Spott und Stubbing. Ich glaube tatsächlich, dass ich hier den Unterschied machen kann. Ich kann mir keinen Grund vorstellen, warum ich überhaupt spotten sollte. Schauen wir uns das Beispiel-Code von Mocha gem Dokumentation:Warum Mock-Daten beim Testen?
require 'test/unit'
require 'mocha/test_unit'
class MiscExampleTest < Test::Unit::TestCase
test "mocking_an_instance_method_on_a_real_object" do
person = Person.new
person.expects(:save).returns(true)
assert person.save
end
Ich verstehe nicht, den Grund hinter dieser Zeile:
Ob ich es verwenden oder nicht, der Ausgang ist völlig gleich: die Test besteht. Ich kann fühlen, dass es etwas damit zu tun hat, dem Objekt/der Klasse zu sagen, wie es sich zu verhalten hat, aber wie testen wir, wenn wir dem Objekt zuerst sagen, dass es wahr ist, und dann prüfen, ob es wahr zurückgibt? Es wird immer so sein, wir haben es gesagt. Ist es nicht sinnlos?
Sie haben grundsätzlich recht. Tests werden nur weniger umfangreich, wenn Sie sich verspotten. Der Vorteil von Mocks ist, dass Sie verschiedene Teile Ihrer App isoliert testen können. Außerdem sind bestimmte Funktionen schwer zu testen, so dass Sie sich verspotten können, wenn Sie keine Lust dazu haben. –