繁体   English   中英

如何期望与Mocha和Chai投球?

[英]How to expect throw with Mocha and Chai?

我无法找到一种解决办法来捕获与摩卡和柴的抛出的字符串

正在测试的代码:

function SimpleDate(year, month, day) {
    if (!isValidDate(year, month, day)) {
        throw "invalid date";
    }
}

测试代码:

it("returns 'invalid date' for year = 2023, month = 13, day = 55", function () {
    let actual = new DateUtils.SimpleDate(2013, 13, 55);
    //let expected ='invalid date';
    let expected = expect(() => DateUtils.SimpleDate(2013, 13, 55)).to.throw('invalid date');


    assert.equal(actual, expected);
});

我希望测试能够通过,但是我尝试过的代码失败,提示“错误:引发了字符串“无效日期”,引发了错误:)”

事实证明,解决方案是定义一个包装函数,该包装函数调用要测试的函数,然后将包装传递给assert.throws

it("returns 'invalid date' for year = 2023, month = 13, day = 55", function () {
    let year = 2013,
        month = 13,
        day = 55;
    let expectedMessage = 'invalid date';
    let wrapper = function () {
        let x = DateUtils.SimpleDate(year, month, day);
    }

    assert.throws(wrapper, expectedMessage);
});

我相信你应该抛出一个错误而不是一个字符串

function SimpleDate(year, month, day) {
        if (!isValidDate(year, month, day)) {
            throw new Error('invalid date');
        }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM