如何用Chai声明错误?

时间:2017-02-09 19:58:50

标签: javascript mocha 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();
        });

但是失败了,因为我把它包裹起来的功能并没有抛出错误。

当然这样的事情应该非常简单。我做错了什么?

1 个答案:

答案 0 :(得分: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(); });