我尝试按照文档进行操作,以便使用assert.rejects(我确实有v10以上的Node)来测试错误消息。
但它总是会过去,即使有一个荒谬的信息。我究竟做错了什么?
it("should fail but it's not",
async ()=> {
let itemId = 'not an id'
assert.rejects(
await ListRepo.checkById(itemId),
{message: 'abracadabra'}
)
}
)
Run Code Online (Sandbox Code Playgroud)
更新:看来如果我返回assert.rejects,它就会起作用。但我还是不知道原因。
使用节点的断言模块如何测试错误消息?
throw new Error('Email is required!');
Run Code Online (Sandbox Code Playgroud)
我使用assert.throws来检查是否抛出错误:
assert.throws(myFunction, Error);
Run Code Online (Sandbox Code Playgroud)
但这并不提供检查消息的能力。
我正在为自定义requirejs加载器编写测试.在格式错误的输入上它应该抛出一个错误.
我正在使用mocha并简单node-assert地测试它:
it('throws a SyntaxError on malformed input', function(done){
assert.throws(function(){ requirejs(['myLoader!malformedInput'], Function.prototype) }, SyntaxError);
done();
});
Run Code Online (Sandbox Code Playgroud)
测试失败的原因是:
AssertionError:缺少预期的异常(SyntaxError)..
根据我的理解,读取断言的文档我的语法应该没问题.错误消息也有点难以理解.
我最好的猜测是,这是因为requirejs呼叫是异步的,但后来我不知道何时呼叫done这种情况?
或者我误解了requirejs处理我传递的错误的方式onload.error(e)?
mocha.js ×3
node-assert ×3
amd ×1
assert ×1
javascript ×1
node.js ×1
promise ×1
requirejs ×1
testing ×1