6

这是我写的一个断言

assert.equal(0,0,"Test Passed);

我希望它会打印消息测试通过,但它没有发生。但是,如果断言失败,则消息将与错误一起显示。

那么如果测试成功,有什么方法可以打印消息吗?

4

2 回答 2

6

根据消息来源,仅在断言失败时才打印该消息。

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
  });
}
于 2013-06-17T20:21:51.197 回答
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让环境知道测试失败。

于 2021-03-01T18:35:34.467 回答