我迷失在Node文档中,并且在弄清楚如何为我的所有assert语句创建自定义(或修改现有的)错误处理时遇到困难,而不必在每个断言中包含单独的消息。
const assert = require('assert');
describe('Test 1', function(){
describe('Checks State', function(){
it('will fail', function(){
assert.strictEqual(true, false);
});
});
});
如预期的那样,先前的代码只会生成类似以下内容的
:1) "Test 1 Checks State will fail"
true === false
我正在使用WebDriverIO,我的目标是在错误消息中包含browser.sessionId
,无需,而不必在每次测试中手动填写第三个(消息)参数。< / p>
assert.strictEqual(true, false, browser.sessionId);
如果能够生成如下错误消息,那将是理想的选择:
1) "Test 1 Checks State will fail"
abc012-efg345-hij678-klm901
true !== false
很抱歉,我知道我应该包括“到目前为止我所做的事情”,但是到目前为止我所做的一切都没有影响。再一次,我迷失在节点文档中:)
答案 0 :(得分:2)
您不能不篡改3 rd 方lib assert
幕后使用fail
函数,该函数在assert
上下文中是私有的,您不能告诉assert
使用自定义fail
函数。
这是幕后使用的功能:
function fail(actual, expected, message, operator, stackStartFunction) {
throw new assert.AssertionError({
message: message,
actual: actual,
expected: expected,
operator: operator,
stackStartFunction: stackStartFunction
});
}
因此,您有三个选择:
(推荐) Fork the lib on github。实现某些观察者,例如onFail
或允许其可扩展并创建拉取请求。
(不推荐)自己覆盖fail
文件中的node_modules\assert\assert.js
函数,以便除了触发常规操作外,它还能满足您的需求
很快,这将永远导致依赖关系中断。
寻找其他断言库(如果有满足您需要的断言库)
答案 1 :(得分:0)
我的答案
const assert = require('assert');
describe('Set Custom Error Message for Assert (Node.js)', () => {
it('Message Assert', () => {
assert.fail(21, 42, 'This is a message custom', '##');
});
});