Manchmal müssen Objekte nur eng miteinander verbunden werden. Beispielsweise muss eine CsvFile
Klasse wahrscheinlich eng mit der CsvRecord
Klasse (oder ICsvRecord
Schnittstelle) zusammenarbeiten.
Nach dem, was ich in der Vergangenheit gelernt habe, lautet einer der wichtigsten Grundsätze der testgetriebenen Entwicklung: "Testen Sie niemals mehr als eine Klasse gleichzeitig." Das heißt, Sie sollten ICsvRecord
Mocks oder Stubs anstelle von tatsächlichen Instanzen von verwenden CsvRecord
.
Nachdem ich diesen Ansatz ausprobiert hatte, bemerkte ich jedoch, dass das Verspotten der CsvRecord
Klasse etwas haarig werden kann. Was mich zu einer von zwei Schlussfolgerungen führt:
- Es ist schwer, Unit-Tests zu schreiben! Das ist ein Code-Geruch! Refactor!
- Es ist einfach unvernünftig, jede einzelne Abhängigkeit auszuspotten.
Als ich meine Verspottungen durch tatsächliche CsvRecord
Instanzen ersetzte , lief es viel reibungsloser. Bei der Suche um für andere Völker Gedanken stolperte ich über diese Blog - Post , die oben # 2 zu unterstützen scheint. Bei Objekten, die von Natur aus eng miteinander verbunden sind, sollten wir uns nicht so sehr um das Verspotten kümmern.
Bin ich weit weg von der Strecke? Gibt es irgendwelche Nachteile bei der obigen Annahme Nr. 2? Sollte ich tatsächlich darüber nachdenken, mein Design umzugestalten?