javascript - mocka deklarera const i jasmine-test
Jag har en tjänst där jag laddar en variabel från en js-fil hämtad från en CDN (läs ingen typedef)
Därför har jag skapat en deklaration för det:
declare const externalValue: string;
@Injectable()
export class Service {
...
Det här är allt mycket bra, men när jag vill testa min tjänst får jag följande felmeddelande:
ReferenceError: externalValue är inte definierad
Vilket är helt logiskt eftersom index.html där filen laddas inte har kallats.
Min fråga är nu hur man kan lura detta värde när jag testar det?
Svar #1
Du kan använda fönsterobjektet för att göra värdet tillgängligt:
window['externalValue'] = 'woww';
Om du har din TypeScript på strict måste du först utöka det globala fönsterobjektet. global i denna definition är egentligen inte nödvändig, men om du placerar den i en fil som laddas för varje fil (som polyfills.ts), behöver du bara deklarera den en gång.
declare global { interface Window { externalValue: string; } }
Då kan du göra:
window.externalValue = 'even more wow';
