【问题标题】:Jest mock knex fn.now(), but keep rest of implementation开玩笑模拟 knex fn.now(),但保留其余的实现
【发布时间】:2021-10-07 10:22:21
【问题描述】:

我正在为使用 knex 的服务编写测试,但是,由于 knex 调用对 knex.fn.now() 有多种用途,我的测试会随着时间的推移产生不同的结果。我想知道是否可以模拟/间谍/劫持对 knex.fn.now() 的内部调用到我可以控制的东西,同时让其余代码保持在其“真实”实现中。我只能找到完全模拟 knex 的示例,这会使我的测试目的毫无意义。

所以我想知道是否可以让 jest 监听特定的函数调用并在其中插入另一个值。

【问题讨论】:

    标签: jestjs knex.js


    【解决方案1】:

    您可以通过创建文件夹 __mocks__/knex/index.js 来模拟 Knex 包。

    在这个文件中,你可以要求真正的 knex 实现,改变它,然后导出。

    它应该看起来像这样:

    // __mocks__/knex/index.js
    const knex = require('knex');
    
    const fixedTime = new Date();
    knex.fn.now = () => fixedTime;
    
    module.exports = knex;
    

    【讨论】:

      猜你喜欢
      • 2021-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-01
      • 1970-01-01
      相关资源
      最近更新 更多