Tak to udělej třeba v Javě, napiš ekvivalent te tridy Program. Chci videt, jak tam TradeProcessor a Test strkas pres ten konstruktor.
Dělám teď na něčem jiném, ale vidím, že s tím testem na null jen obcházíš Elvise. To v Javě uděláš tak, že definuješ hodnotu atributu už při vytvoření instance objektu. Při zadání patřičného parametru ji změníš.
Uniká mi, co má dělat ten TradeProcessor, ale zběžně tam místo new TradeProcessor() strčím v testu new MockTradeProcessor().
Tohle začíná být už opravdu hodně zoufalé, mírně řečeno. Jak tam strčíš v testu new MockTradeProcessor(), když nebudeš mít setter nad atributem TradeProcessor ve třídě Program?
Obecně řečeno, pokud v nějaké třídě A musíš speciálně vytvořit instanci jiné třídy B a C, tak dpč. asi těžko uděláš konstruktor, který bere třídy B a C. Testovat to, dpč., musíš buďto tak, že tam dáš settery nebo to nasetuješ přes reflexi. A pokud to nasetuješ přes reflexi, příjdeš o automatizovanou refaktorizaci.
Konec diskuzí s tebou, začínám tě považovat za trolla autistického typu.
Předpokládám, že vidíš problém v tom, že ten
TradeProcessor krmíš daty, které jsou k dispozici až v tom
Program, že? Tak je fakt, že něco takového tam injektovat moc nemá smysl, máš-li to postavené takhle.
Každopádně moc nechápu, proč se tady rozčiluješ mezi konstruktorem versus setterem, versus reflexi? Vždyť to nic neřeší.
Ten
TradeProcessor tam nemůžeš namockovat ani setterem, ani reflexí.
Rozdíl mezi konstruktorem a setterem je
jen a pouze v tom, že konstruktorem hodnoty nastavuješ povinně, zatímco setterem volitelně.