【问题标题】:How to spy on a default exported function如何监视默认导出函数
【发布时间】:2015-12-29 17:53:18
【问题描述】:

sinon.spy 有 2 个参数,对象和函数名。

我有一个模块如下:

module.exports = function xyz() { }

如何为xyz 定义间谍?我没有要使用的对象名称。

想法?

【问题讨论】:

    标签: javascript node.js sinon


    【解决方案1】:

    如果您使用 ES6 模块导入功能,上述内容实际上不起作用,如果您是我发现您实际上可以像这样监视默认值。

    // your file
    export default function () {console.log('something here');}
    
    // your test
    import * as someFunction from './someFunction';
    spyOn(someFunction, 'default')
    

    http://2ality.com/2014/09/es6-modules-final.html中所述

    默认导出实际上只是一个具有特殊名称 default 的命名导出

    因此 import * as someFunction 使您可以访问整个 module.exports 对象,从而使您可以监视默认值。

    【讨论】:

    • 有人找到了使用 module.exports 的方法吗?
    • @PimHeijden 查看模块rewire。还有一篇关于how to use it 的精彩博文。
    • 这个不行,导出模块的默认属性是不可写的。
    猜你喜欢
    • 2019-06-12
    • 1970-01-01
    • 2016-03-10
    • 2021-06-28
    • 1970-01-01
    • 2016-06-03
    • 2020-05-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多