8
Node.js的單元測試模塊具有基本的斷言assert.fail:Assert.fail(node.js):運算符參數是什麼意思?
assert.fail(actual, expected, message, operator)
是什麼operator
意思?我是單元測試的新手......
Node.js的單元測試模塊具有基本的斷言assert.fail:Assert.fail(node.js):運算符參數是什麼意思?
assert.fail(actual, expected, message, operator)
是什麼operator
意思?我是單元測試的新手......
文檔說:operator
的值用於在提供錯誤消息時分離actual
和expected
的值。這在Node.js'documentation for the assert module中描述。
但是,如果你嘗試這種在交互的shell,你看到的參數似乎被忽略:
> assert.fail(23, 42, 'Malfunction in test.', '###')
AssertionError: Malfunction in test.
at repl:1:9
at REPLServer.self.eval (repl.js:111:21)
at Interface.<anonymous> (repl.js:250:12)
at Interface.EventEmitter.emit (events.js:88:17)
at Interface._onLine (readline.js:199:10)
at Interface._line (readline.js:517:8)
at Interface._ttyWrite (readline.js:735:14)
at ReadStream.onkeypress (readline.js:98:10)
at ReadStream.EventEmitter.emit (events.js:115:20)
at emitKey (readline.js:1057:12)
這一切都有道理,當你看看在implementation of the assert module, lines 101-109:
function fail(actual, expected, message, operator, stackStartFunction) {
throw new assert.AssertionError({
message: message,
actual: actual,
expected: expected,
operator: operator,
stackStartFunction: stackStartFunction
});
}
所以,一個更好的描述可能是它沒有在消息中使用自動,但它可以來,如果你捕獲該異常使用,並創建一個appropr iate消息你自己。因此,如果您要創建自己的測試框架,則此參數可能很有用。
您可以強制的Node.js使用該參數如果省略message
參數,例如通過明確傳遞undefined
:
> assert.fail(23, 42, undefined, '###')
AssertionError: 23 ### 42
[...]
太好了,謝謝!其實只有一個參數沒有在文檔中提到過。我必須學會找到源代碼自己這些功能 - 它看起來像文檔可以比代碼更加混亂... – esp
基本上,你會發現在Node.js的倉庫裏'lib'文件夾中的所有庫。 –