2016-04-21 5 views
2

ein Stück Code Betrachten Sie unter:Chai: Wie kann ich überprüfen Ausnahme Eigenschaften

var expect = require('chai').expect; 

parse = function() { 
    throw {error: 'PROTOCOL_ERROR'} 
} 

describe('parser', function() { 

    it('throw error on unfinished command', function() { 
    try { 
     parse("*2\r\n$4\r\necho\r\n$11\r\nhel") 
    } catch (e) { 
     expect(e).to.equal({error: 'PROTOCOL_ERROR'}) 
    } 
    }) 
}); 

Gibt es eine Möglichkeit, diese try...catch vorformulierten im Code zu vermeiden? Chai hat ‚werfen‘ Methode, aber es gibt nur einen instanceof Scheck

Antwort

0

Zunächst sollten Sie eine Instanz von Error oder etwas werfen, die Error

parse = function() { 
    throw new Error('PROTOCOL_ERROR'); 
} 

Dann erstreckt chai ein Verfahren geltend zu machen hat, dass eine Funktion ist einen Fehler werfen http://chaijs.com/api/bdd/#method_throw

So ist die letzte Sache, sollte wie folgt aussehen:

var expect = require('chai').expect; 

parse = function() { 
    throw new Error('PROTOCOL_ERROR'); 
} 

describe('parser', function() { 

    it('throw error on unfinished command', function() { 

    expect(function() { parse("*2\r\n$4\r\necho\r\n$11\r\nhel") }).to.throw(Error, 'PROTOCOL_ERROR'); 

    }) 
}); 

Edit: Wrapped Funktionsaufruf in Funktion. Andernfalls wird der Fehler ausgelöst, bevor expect aufgerufen wird und eine Chance hat, es zu fangen.

+0

Also, wie kann ich eine Eigenschaft Fehler überprüfen? – kharandziuk

+0

Sie können nur feststellen, dass der Fehler mit einem bestimmten Konstruktor ausgelöst wurde und was die Nachricht ist. Welche Eigenschaft möchten Sie überprüfen? – aray12

+0

Egal was die Eigenschaft. suchen Sie zum Beispiel: http://StackOverflow.com/A/24078053/1907902 es kann sMessage sein, zum Beispiel. – kharandziuk

1

fand ich diese Antwort:

var expect = require('chai').expect; 

parse = function() { 
    throw {error: 'PROTOCOL_ERROR'} 
} 

describe('parser', function() { 
    it('throw error on unfinished command', function() { 
     expect(
     () => parse("*2\r\n$4\r\necho\r\n$11\r\nhel") 
    ).to.throw().which.has.property('error', 'PROTOCOL_ERROR'); 
    }) 
}); 
Verwandte Themen