enhetstestning - Vad är skillnaden mellan import/require och referenstaggar i Typescript
Jag försöker testa lite front-end Typescript-kod med Mocha. Problemet är att jag använder Typescript-referenstaggar för intellisense i Webstorm för att lösa min front-end-kod. Jag måste ladda filerna i webbläsaren med requireJS, eftersom referenstaggar inte gör det. Hittills har jag kunnat få detta.
Men sedan vill jag testa koden med Mocha - vilket är där problemet börjar. Mocha-testfiler verkar inte ha någon relation till den kod som testas om den inte importeras med import-/require-satser, även om Typescript-referens-taggar har lagts till. Om jag försöker exportera koden i ts-filen som testas, och importera den i Mocha Unit Test-filer, då kan andra ts-filer som innehåller frontend-koden inte längre lösa den.
Tänk på denna situation:
TS File A references TS File B using Typescript reference tags.
Mocha Unit Test X tries to reference TS file B using reference tags, which does not work.
Mocha Unit Test X tries to reference TS file B using import/require statments, which requires that code in TS file B be "exported".
If TS file B is "exported" then File A can't reference it anymore.
Jag är på något sätt fast i det löjliga beroendehanteringssystemet som dyker upp, på grund av att jag försöker testa ett Typescript/NodeJS-projekt med Mocha. Snälla hjälp mig att förstå hur beroenden fungerar här och hur jag kan få detta ordnat/förenklat.
Om det finns ett bättre och lika kraftfullt ramverk som är lämpligt för den här typen av projekt och som kan tillhandahålla enhetstestning (och end-to-end-testning), VAR SNÄLL och föreslå.
Svar #1
Enklaste lösningen: Använd AMD på frontenden (inte referenssammanfogning) och CommonJS på mocha. Den uppenbara nackdelen är att du behöver kompilera din kod två gånger, en gång när du kör frontend, och separat när du kör mocha. JS som genereras i mocha-fallet kommer att vara olika från JS som genereras i frontend-fallet. Du kanske vill använda --outDir för att separera de två fallen.