我是NodeJS编程和Mocha测试的新手。
我正在尝试使用Promise.resolve创建一个摩卡测试用例,并抛出错误 但是assert.throw不能使用它
我尝试过函数(断言)[https://nodejs.org/api/assert.html#assert_assert_throws_fn_error_message]
index.js
def som(start, stop, base): ## base is a list of the numbers you want to use as possible base.
n = 0
for i in range(start, stop):
for b in base:
if i % b == 0: ## if any match is encountered add 1 and break out of the loop.
n += 1
break
print("there are", n, "multiples of any number in", base, " between", start, "and", stop, ".")
index.test.js
const reqData = JSON.parse(data);
return Promise.resolve()
.then(() => {
if(reqData){
throw new Error(
'This new error thows!'
);
}
console.log('It works!!');
})
.then(() => {
console.log('work completed');
}
)
}
行等待assert.throw给出错误
AssertionError [ERR_ASSERTION]:缺少预期的异常(错误)。
提前谢谢
答案 0 :(得分:0)
assert.throws
需要一个引发错误的函数。这与被拒绝的承诺不同,后者基本上是一个对象。
另一个问题是函数不会返回getResult(data)
promise。
断言实际上并不检查错误是否有This new error thows!
,而是在失败时导致此消息的错误。
assert
在节点10和更高版本的supports promises中。应该是:
await assert.rejects(
() => getResult(data),
{
constructor: Error,
message: 'This new error thows!'
},
'Promise not rejected'
);