在 Promise 中断言函数调用

2023-12-19

我正在为异步 Node.js 函数编写一些测试,该函数使用 Mocha、Chai 和 Sinon 库返回承诺。
假设这是我的功能:

function foo(params) {
  return (
    mkdir(params)
    .then(dir => writeFile(dir))
  )
}

mkdir & writeFile都是返回 Promise 的异步函数。
我需要测试一下mkdir被调用一次params给予foo.

我怎样才能做到这一点?
我见过很多关于如何断言总体返回值的例子foo (诗农如约 https://www.npmjs.com/package/sinon-as-promised对此非常有帮助),但不涉及如何确保在承诺内调用各个函数。

也许我忽略了一些事情,这不是正确的方法?


mkdir这里不是异步调用的,所以测试起来相当简单:

mkdir = sinon.stub().resolves("test/dir")
foo(testparams)
assert(mkdir.calledOnce)
assert(mkdir.calledWith(testparams))
…

如果你想测试一下writeFile被调用,这只是稍微复杂一些 - 我们必须等待返回的承诺foo在断言之前:

… // mdir like above
writeFile = sinon.stub().resolves("result")
return foo(testparams).then(r => {
    assert.strictEqual(r, "result")
    assert(writeFile.calledOnce)
    assert(writeFile.calledWith("test/dir"))
    …
})
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Promise 中断言函数调用 的相关文章

随机推荐