gpt4 book ai didi

javascript - 为断言设置自定义错误消息 (Node.js)

转载 作者:行者123 更新时间:2023-11-30 14:31:14 24 4
gpt4 key购买 nike

我迷失在 Node 文档中,我很难弄清楚如何为我的所有断言语句创建自定义(或修改现有的)错误处理,而不必在每个断言中包含单独的消息。

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无需 手动填写第三个(消息)参数在每次测试中。

assert.strictEqual(true, false, browser.sessionId);

如果我能生成如下错误消息,那就太理想了:

1) "Test 1 Checks State will fail"
abc012-efg345-hij678-klm901
true !== false

抱歉,我知道我应该包括“到目前为止我所做的”——但到目前为止我所做的一切都没有任何影响。再一次,我在 Node 文档中迷路了:)

最佳答案

如果不篡改第 3rd 方库,你不能 assert

在幕后,使用一个fail函数,它在assert上下文中是私有(private)的,你不能告诉assert使用一个自定义的失败函数。

这是在幕后使用的函数:

function fail(actual, expected, message, operator, stackStartFunction) {
throw new assert.AssertionError({
message: message,
actual: actual,
expected: expected,
operator: operator,
stackStartFunction: stackStartFunction
});
}

因此,您有三个选择:

  1. (推荐) Fork the lib on github .实现一些观察者,例如 onFail,或者允许它可扩展并创建拉取请求。

  2. (不推荐) 自己覆盖 node_modules\assert\assert.js 文件中的 fail 函数,这样,除了触发通常的东西,它也会做你想做的。

    虽然很快,但这将导致永远中断依赖关系。

  3. 寻找其他断言库(如果有满足您需要的)

关于javascript - 为断言设置自定义错误消息 (Node.js),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51137619/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com