如何获取断言打印成功消息?

时间:2013-06-17 19:02:27

标签: node.js unit-testing

这是我写的一个断言

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

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

如果测试成功,有没有办法打印消息?

2 个答案:

答案 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 让环境知道测试失败。