在导出函数上使用 chai 进行间谍活动

Spy using chai on exported function

我遇到这种情况:

user.js:

var a = function() {
    function b() {
        return 5
    }
}

module.exports = a

如何侦测函数 b()

在我的 test.js 文件中,我有这样的内容:

let us = require('../user)

chai.spy.on(us, 'b', returns => 3);

但这行不通。如何使用 chai?

解决此问题

你不能在函数 b 上 mock/stub/mock,因为它在函数 a 中声明为私有函数。 mock/stub/spy 方法需要包装原始函数并在其上添加 spy/stub/mock 行为。

由于函数 b 是私有的,您不能将其导入测试文件并 mock/stub/spy 它。这就是为什么这是不可能的。