Kdysi jsem tady popisoval jak v NodeJS připodobnit chování runtime při spouštění daného modulu. Něco, co se běžně v Pythonu dělá takto, ale v NodeJS se to moc nevidí:
if __mame__ == "__main__": print('Hlavni funkce aplikace...') main()
Původně jsem v NodeJS tohle řešil následovně:
if (require.main === module) { main(); }
Další, možná o něco lépe vypadající řešení
if (!module.parent) { main(); }
Tahle podmínka mi prostě připadá logičtější 🙂
A k čemu je to dobré?
No třeba k samotnému testování… Jsem líný a někdy mi dělá problém dokopat se udělat nějaké testování nad modulem, kyterý je přece úplně jasnej: tady nemůže být žádná chyba…. A právě proto přímo dodaného modulu napíšu tuhle podmínku, která má nějakou sekci, která se provádí jen v případě, že modul spouštím přímo pod NodeJS a nerequiruji ho do nějakého dalšího, nadřazeného modulu.