Manchmal müssen Objekte nur eng miteinander verbunden werden. Beispielsweise muss eine CsvFileKlasse wahrscheinlich eng mit der CsvRecordKlasse (oder ICsvRecordSchnittstelle) 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 ICsvRecordMocks oder Stubs anstelle von tatsächlichen Instanzen von verwenden CsvRecord.
Nachdem ich diesen Ansatz ausprobiert hatte, bemerkte ich jedoch, dass das Verspotten der CsvRecordKlasse 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 CsvRecordInstanzen 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?