2017-02-09 40 views
0

我迷失了这一点,我已经通过文档正确,我可以;我的头围绕着它。如何用Chai声明错误?

我试图写一个测试,检查该方法抛出这样的错误...

 it("requires an soCode parameter",() => { 
      let readyStub = Sinon.stub(objUt, '_executeWhenReady'); 
      expect(objUt.mapStopsAroundHub(undefined, testPostCode)).to.throw("The 'soCode' parameter is required"); 
      readyStub.restore(); 
     }); 

这失败,因为它似乎想要的功能不是函数执行 - 我改变了代码如下...

 it("requires an soCode parameter",() => { 
      let readyStub = Sinon.stub(objUt, '_executeWhenReady'); 
      expect(objUt.mapStopsAroundHub).to.throw("The 'soCode' parameter is required"); 
      readyStub.restore(); 
     }); 

这正常检查的第一个参数(就像我现在无法提供任何),但我的运气与参数二号......

 it("requires an param2 parameter",() => { 
      let readyStub = Sinon.stub(objUt, '_executeWhenReady'); 
      expect(objUt.mapStopsAroundHub).to.throw("The 'param2' parameter is required", "VALUE", undefined); 
      readyStub.restore(); 
     }); 

(我试着给throw调用添加参数,但这不起作用 - 它不在我看到的文档中,所以这并不奇怪)。

当时我就想试试包装函数调用...

 it("requires an param2 parameter",() => { 
      let readyStub = Sinon.stub(objUt, '_executeWhenReady'); 
      expect(() => objUt.mapStopsAroundHub("VALUE", undefined)).to.throw("The 'param2' parameter is required"); 
      readyStub.restore(); 
     }); 

但失败了,因为该功能我不会引发错误包裹它。

当然这样的事情应该很简单。我究竟做错了什么?

回答

0

好的 - 我显然是很累!功能包装的方法是正确的路要走,但我忘了花括号。

it("requires an param2 parameter",() => { let readyStub = Sinon.stub(objUt, '_executeWhenReady'); expect(() => { objUt.mapStopsAroundHub("VALUE", undefined);}).to.throw("The 'param2' parameter is required"); readyStub.restore(); });