Website-Suche

Jasmine-Kontext + TypeScript


Ich verwende Jasmine mit Typescript und wir haben kürzlich begonnen, den this-Kontext in beforeEach und it zu verwenden.

Beispiel :

beforeEach(() => {
  this.fixture = TestBed.createComponent(blablabla);
});

it('should do something', () => {
   expect(this.fixture).toBeTruthy();
});

Das Problem ist, dass TypeScript nicht schlau genug ist, um herauszufinden, dass this innerhalb von beforeEach genau dasselbe this ist wie in it. Weiß jemand eine einfache Möglichkeit, TypeScript auf diese Tatsache 'hinweisen' zu lassen?

Ist das überhaupt möglich?

Antwort #1

Du kannst this in Funktionen typisieren. Tatsächlich, wenn du nur Pfeilfunktionen (in describe, beforeEach und it) verwendest, wird der Kontext this vermutlich der äußerste globale Kontext sein. Da dieser nicht annotiert werden kann, schlage ich vor, der äußersten describe eine normale altmodische Funktion zu übergeben:

// Dummy-type Jasmine functions (only for this MWE)
declare const describe: (msg: string, fun: () => void) => void;
declare const it: (msg: string, fun: () => void) => void;
declare const beforeEach: (fun: () => void) => void;

class A {
    aProperty: string;
}

interface TestSuiteContext {
  myObj: A;
}

describe('Test suite', function (this: TestSuiteContext) {
    beforeEach(() => {
        this.myObj = new A();
    });

    it('should do something', () => {
        const message: string = this.myObj.aProperty;
    });
});

Verwandte Artikel