挂钩 assert.* 函数
Hook into assert.* functions
背景:我有一组在模板引擎中使用的函数,它们的输出总是转换为字符串。这意味着在测试它们时,我真正感兴趣的是它们的字符串表示形式。
是否有任何方法可以“挂钩”到 assert.*()
以在每次断言之前修改输入?
这样我就不用每次都显式地转换输出了:
it("should foo bar", () => {
assert.strictEqual("" + myFunction1(foo), "bar")
assert.strictEqual("" + myFunction1(baz), "fiz")
})
更改断言函数不是一个好主意,因为对 assert.strictEqual
的任何其他调用都会对您造成 谎言,从而产生意外的输出。例如。 assert.strictEqual(true, true)
将 return false
因为 ""+true
不等于 true
.
更好的选择是使用实用函数来代理所有 assert.strictEqual
调用:
function assertWithCast (val1, val2) {
assert.strictEqual("" + val1, val2)
}
然后在你的测试中使用它:
it("should foo bar", () => {
assertWithCast(myFunction1(foo), "bar")
assertWithCast(myFunction1(baz), "fiz")
})
背景:我有一组在模板引擎中使用的函数,它们的输出总是转换为字符串。这意味着在测试它们时,我真正感兴趣的是它们的字符串表示形式。
是否有任何方法可以“挂钩”到 assert.*()
以在每次断言之前修改输入?
这样我就不用每次都显式地转换输出了:
it("should foo bar", () => {
assert.strictEqual("" + myFunction1(foo), "bar")
assert.strictEqual("" + myFunction1(baz), "fiz")
})
更改断言函数不是一个好主意,因为对 assert.strictEqual
的任何其他调用都会对您造成 谎言,从而产生意外的输出。例如。 assert.strictEqual(true, true)
将 return false
因为 ""+true
不等于 true
.
更好的选择是使用实用函数来代理所有 assert.strictEqual
调用:
function assertWithCast (val1, val2) {
assert.strictEqual("" + val1, val2)
}
然后在你的测试中使用它:
it("should foo bar", () => {
assertWithCast(myFunction1(foo), "bar")
assertWithCast(myFunction1(baz), "fiz")
})