mocha.js - Kombinirajte mocha, Typescript (i pratite)
Kreirao sam projekt u kojem želim koristiti Mocha za testiranje svog Typescript koda. Ako ovo učinim:
mocha ts/test --compilers ts:typescript-require
Nakon što napravim promjenu, to će ne uspjeti s porukom poput:
error TS2307: Cannot find module 'mocha'.
Ovo je čudno jer ako samo pokrenem tsc, sve je u redu (imam sve svoje definicije tipova i koristim tsconfig.json datoteku). Također sam instalirao typescript-require za mocha.
Ali svaki put kad nakon toga pokrenem naredbu, ona radi?!? Ali ako stavim mocha u watch mode:
mocha -w ts/test --compilers ts:typescript-require
Tada radi prvi put, ali nakon toga ne uspijeva. Ugh! Imate li kakvih prijedloga kako dobiti stabilno okruženje koristeći mocha i Typescript tako da mogu testirati i pratiti promjene?
Odgovor #1
Napisao sam ts-node nakon što sam naišao na sličan slučaj uporabe (https://github.com/TypeStrong/ts-node). Trebalo mi je pokretati testove s različitim test runnerima, a kompajliranje u drugi direktorij nije bilo dovoljno jer također volim inline-ati testne privitke. To je prošireno u potpuno funkcionalno Node okruženje za TypeScript (uključujući CLI s cool malom .type naredbom). U README-u postoji primjer kako ga izvršiti s Mocha.
Sve je trenutno u memoriji, ali će se s vremenom proširiti dodatnim oznakama kako bi bilo pogodno za korištenje u proizvodnji (npr. bez režije tijekom izvođenja, samo pokretanje kompilacije). Javi mi kako ti ide!
Odgovor #2
ova naredba prati promjene TypeScript testova i pokreće ih (ts-node bi trebao biti instaliran):
"scripts": {
"watch": "mocha -r ts-node/register test/*Test.ts --watch --watch-extensions ts"
}
Odgovor #3
Za mene sam morao dodati prefiks poput **/
mocha -r ts-node/register "test/**/*.ts" --watch --watch-files **/*A za više specifičnih mapa/datoteka:
mocha -r ts-node/register "test/**/*.ts" --watch --watch-files src/**/*,test/**/*