2016-04-15 4 views
3

wie kann ich richtig werfen? es ist verdrahtet, dass für eine gleiche Funktion, die beide Wurf und not.throw der Testwie kann ich throw wenn `new constructor()` mit mocha und chai

Code weitergeben jsfiddle auch verfügbar ist, https://jsfiddle.net/8t5bf261/

class Person { 
 
    constructor(age) { 
 
    if (Object.prototype.toString.call(age) !== '[object Number]') throw 'NOT A NUMBER' 
 
    this.age = age; 
 
    } 
 
    howold() { 
 
    console.log(this.age); 
 
    } 
 
} 
 

 
var should = chai.should(); 
 
mocha.setup('bdd'); 
 

 
describe('Person', function() { 
 
    it('should throw if input is not a number', function() { 
 
    (function() { 
 
     var p1 = new Person('sadf'); 
 
    }).should.not.throw; 
 
    
 
    (function() { 
 
     var p2 = new Person('sdfa'); 
 
    }).should.throw; 
 

 
    }) 
 
}) 
 

 
mocha.run();
<div id="mocha"></div> 
 
<link href="https://cdnjs.cloudflare.com/ajax/libs/mocha/2.4.5/mocha.css" rel="stylesheet" /> 
 
<script src="https://cdn.rawgit.com/jquery/jquery/2.1.4/dist/jquery.min.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/mocha/2.4.5/mocha.min.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/chai/3.5.0/chai.min.js"></script>

Antwort

2

.throw is a function, as per the docs. Sie sollten das nennen, um die eigentliche Behauptung zu machen. Wie es ist, erhalten Sie nur das Funktionsobjekt. BTW, verwenden Sie eine der Error Konstrukteuren einen Fehler zu werfen:

Sie könnten

(function() { 
    var p1 = new Person(1); 
}).should.not.throw(/NOT A NUMBER/); 

(function() { 
    var p2 = new Person('sdfa'); 
}).should.throw(/NOT A NUMBER/); 

Hinweis versuchen. Etwas anderes zu werfen ist generell verpönt.

+0

danke! Es klappt! – Sabrina

+0

Sie sollten vielleicht [akzeptieren diese Antwort] (http://meta.stackexchange.com/a/5235/235416), wenn es hilft :-) – thefourtheye

+0

danke, nur gelernt, wie man die Antwort zu akzeptieren. :) – Sabrina