Node.js 钩住assert.*函数

Node.js 钩住assert.*函数,node.js,mocha.js,assert,Node.js,Mocha.js,Assert,背景:我有一组在模板引擎中使用的函数,它们的输出总是转换为字符串。这意味着在测试它们时,我真正感兴趣的是它们的字符串表示 有没有办法“钩住”到assert.*()中,在每次断言之前修改输入 这样可以避免每次显式转换输出: it("should foo bar", () => { assert.strictEqual("" + myFunction1(foo), "bar") assert.strictEqual

背景:我有一组在模板引擎中使用的函数,它们的输出总是转换为字符串。这意味着在测试它们时,我真正感兴趣的是它们的字符串表示

有没有办法“钩住”到
assert.*()
中,在每次断言之前修改输入

这样可以避免每次显式转换输出:

  it("should foo bar", () => {
    assert.strictEqual("" + myFunction1(foo), "bar")
    assert.strictEqual("" + myFunction1(baz), "fiz")
  })

更改assert函数不是一个好主意,因为对
assert.striefqual
的任何其他调用都会欺骗您,产生意外的输出。例如,
assert.StreetQual(true,true)
将返回
false
,因为
“+true
不等于
true

更好的替代方法是使用实用程序函数代理所有
assert.striefqual
调用:

function assertWithCast (val1, val2) {
    assert.strictEqual("" + val1, val2)
}
然后在测试中使用它:

it("should foo bar", () => {
  assertWithCast(myFunction1(foo), "bar")
  assertWithCast(myFunction1(baz), "fiz")
})