这是我写的一个断言
assert.equal(0,0,"Test Passed);
我希望它会打印测试通过的消息,但它没有发生。但是,如果断言失败,则会显示消息以及错误。
如果测试成功,有没有办法打印消息?
答案 0 :(得分:5)
根据消息来源,只有在断言失败时才会打印消息。
assert.equal = function equal(actual, expected, message) {
if (actual != expected) fail(actual, expected, message, '==', assert.equal);
};
为了完整起见,这里是fail
的定义。
function fail(actual, expected, message, operator, stackStartFunction) {
throw new assert.AssertionError({
message: message,
actual: actual,
expected: expected,
operator: operator,
stackStartFunction: stackStartFunction
});
}
答案 1 :(得分:0)
没有显示成功消息的内置功能。但是,由于 assert
会在失败时抛出错误(并停止执行),因此在 assert
调用后立即放置一条成功消息可以有效地实现相同的目的:
const assert = require('assert')
assert.deepStrictEqual(value, otherValue)
console.log('test passed') // unreachable if assert fails as it throws an error
如果您希望继续执行,可以使用 try/catch
:
const tests = [
[0,1],
[1,1],
]
for (const [value, otherValue] of tests) {
try {
assert.deepStrictEqual(value, otherValue)
console.log(`Success: ${value} equals ${otherValue}`)
} catch(error) {
console.error(`Failure: ${value} does not equal ${otherValue}`)
}
}
// output:
// Failure: 0 does not equal 1
// Success: 1 equals 1
请注意,如果将其用于自动化测试,则预期的失败结果可能仍然是抛出错误或 exit 1
让环境知道测试失败。