Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何期待与摩卡和柴一起投掷?_Javascript_Mocha.js_Chai - Fatal编程技术网

Javascript 如何期待与摩卡和柴一起投掷?

Javascript 如何期待与摩卡和柴一起投掷?,javascript,mocha.js,chai,Javascript,Mocha.js,Chai,我找不到一个解决办法,用摩卡咖啡和柴来抓住一根被抛出去的绳子 正在测试的代码: 函数简化日期(年、月、日){ 如果(!isValidDate(年、月、日)){ 抛出“无效日期”; } } 测试代码: it(“返回年=2023、月=13、日=55的‘无效日期’”,函数(){ let actual=new DateUtils.SimpleDate(2013,13,55); //让预期为“无效日期”; let expected=expect(()=>DateUtils.SimpleDate(2013

我找不到一个解决办法,用摩卡咖啡和柴来抓住一根被抛出去的绳子

正在测试的代码:

函数简化日期(年、月、日){
如果(!isValidDate(年、月、日)){
抛出“无效日期”;
}
}
测试代码:

it(“返回年=2023、月=13、日=55的‘无效日期’”,函数(){
let actual=new DateUtils.SimpleDate(2013,13,55);
//让预期为“无效日期”;
let expected=expect(()=>DateUtils.SimpleDate(2013,13,55)).to.throw('invalid date');
断言。相等(实际、预期);
});

我希望测试能够通过,但是我尝试过的代码失败了,它说“Error:the string“invalid date”被抛出,抛出一个错误:)”

我认为应该抛出一个错误而不是字符串

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

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

it(“返回年=2023、月=13、日=55的‘无效日期’”,函数(){
假设年份=2013年,
月=13,
日=55;
让expectedMessage='无效日期';
让包装器=函数(){
设x=DateUtils.SimpleDate(年、月、日);
}
抛出(包装器,expectedMessage);
});

我已经尝试过了,只是又尝试了一次,但仍然没有发现错误。我想我知道发生了什么。在一个部分中有两个测试。你有一个投掷测试。let expected=expect(()=>DateUtils.SimpleDate(2013,13,55)).to.throw('invalid date');然后你有一个assert.equal(实际的,预期的);测验你只需要第一个。试着去掉'let expected='和'assert.equal(actual,expected);'expect应该已经在测试错误了,我认为复制它是行不通的。另外,assert.equal正在查看两者是否存在浅相等。我很确定assert.equal不是用来捕捉抛出的错误的。当你抛出一个语句时,你需要捕捉那个错误。用一个挡块。不能将其存储在变量中