2016-11-07 4 views
0

Ich habe die folgende einfache Jasmin Test ...Einfache Typoskript Jasmin-Test werfen ‚erwarten‘ Fehler

//test.spec.ts 
describe('Sample', function(){ 
    it('Should do something',() => expect(true).toBe(true)); 
}); 

Aber wenn ich laufe ich ...

Error: 'expect' was used when there was no current spec, this could be because an asynchronous test timed out 

Das funktioniert ganz gut. ..

describe('Sample', function(){ 
    it('Should do something', function(){ 
     expect(true).toBe(true); 
    }); 
}); 

Antwort

3

prüfen diese playground

Wenn es diese beiden Aussagen

describe('Sample', function(){ 
    it('Should do something', 
     () => expect(true).toBe(true)); 
}); 

describe('Sample', function(){ 
    it('Should do something',() => { 
     expect(true).toBe(true)); 
    } 
}); 

sie in dif führen dene JS-Code

describe('Sample', function() { 
    it('Should do something', function() { return expect(true).toBe(true); }); 
}); 
describe('Sample', function() { 
    it('Should do something', function() { 
     expect(true).toBe(true); 
    }); 
}); 

Eine einfache Aussage, ohne {} Umwickeln wird transpiled in return-Anweisung, die wir hier nicht brauchen

0

Ich bin ziemlich sicher, dass der Grund, warum Sie es bekommen, ist die Pfeil-Funktion, die den Umfang anders als die regulären anonym behandelt Funktionen.

Wenn Sie tun dies:

it('Should do something', function() { 
    expect(true).toBe(true); 
}); 

Die Funktion mit spec als this ausgeführt wird, aber wenn Sie einen Pfeil Funktion:

it('Should do something',() => { 
    expect(true).toBe(true); 
}); 

Die this ist anders.

Leicht zu überprüfen, versuchen:

it('Should do something', function() { 
    console.log("this is: ", this); 
    expect(true).toBe(true); 
}); 

Und:

it('Should do something',() => { 
    console.log("this is: ", this); 
    expect(true).toBe(true); 
});