【问题标题】:How do I assert an Error with Chai?如何用 Chai 断言错误?
【发布时间】:2017-02-09 19:58:50
【问题描述】:

我对此感到迷茫,我一直在阅读文档,但我无法理解它。

我正在尝试编写一个测试来检查一个方法是否会抛出这样的错误......

       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();
        });

但这失败了,因为我包装它的函数没有抛出错误。

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

【问题讨论】:

    标签: javascript mocha.js chai


    【解决方案1】:

    好吧——我显然只是累了!函数包装方法是正确的方法,但我忘记了花括号。

    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(); });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-22
      • 1970-01-01
      • 2023-03-04
      • 2018-06-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-26
      相关资源
      最近更新 更多