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 に答える