2016-04-15 20 views
0

Ich versuche, die Fehlermeldung auf eine abgelehnte Versprechen zu überprüfen, und wenn ich die Nachricht Zeichenfolge im Test falsch macht es noch besteht.Wie teste ich mit Chai-as-Versprochen ein abgelehntes Versprechen und die Fehlermeldung?

MyService.doSomething({ id: 12345 }).should.eventually.be.rejectedWith(TypeError, 'no attr foo defined2'); 



    svc.doSomething = function(thing){ 
    var def = $q.defer(); 

    if (!thing.foo) { 
     def.reject(new Error('no attr foo defined')); 
    } else { 
     def.resolve(thing); 
    } 

    return def.promise; 
    }; 

Update, es scheint, dass meine Tests nicht ordnungsgemäß funktionieren. Wenn ich es mal aus zurück:

it.only('should error', function(){ 
    // todo this should fail but it just times out 
    return MyService.doSomething({ id: 12345 }).should.eventually.be.rejectedWith(TypeError, 'no attr foo defined2'); 
    }); 







    svc.doSomething = function(thing){ 
    var def = $q.defer(); 

    if (!thing.foo) { 
     def.reject(new Error('no attr foo defined')); 
    } else { 
     def.resolve(thing); 
    } 

    return def.promise; 
    }; 

Hier ist der Fehler:

Error: timeout of 4000ms exceeded. Ensure the done() callback is being called in this test. 

Antwort

0

Sie sind die schließlich und die Rückkehr vor Ihrem Anruf zu vergessen.!

return MyService.doSomething({ id: 12345 }).should.eventually.be.rejectedWith... 
+0

Ich habe das versucht. Immer noch, wenn ich die Zeichenfolge habe 'no attr foo defined2' – chovy

+0

Und die Rückkehr vor dem Anruf auch! –

+0

Wenn ich addiere, gib es einfach mal aus und sage 'done()' wird nicht aufgerufen. – chovy