问答

jest如何测试同一模块内的函数依赖?

作者:admin 2021-05-05 我要评论

比如 util.js ,定义了两个函数: const util = { A() { return this.B(); }, B() { return 'B'; }};module.exports = util; 那么,怎么测试函数 A ? test("A=B,c...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)

比如util.js,定义了两个函数:

const util = {
  A() {
    return this.B();
  },
  B() {
    return 'B';
  }
};
module.exports = util;

那么,怎么测试函数A?

test("A=>B,case:1", () => {
  let A = util.A;
  expect(A()).toBe("B");
});

这么写测试会报错:TypeError: this.B is not a function。难道要用mock不成?

###

你这个的问题是因为 this 指向变了的问题,跟单测无关。

你把你这代码直接运行,它也是不能跑的:

const util = {
    A() {
        return this.B();
    },
    B() {
        return 'B';
    },
};

let A = util.A;
A();      // ERROR! this.B is not a function

util.A(); // 'B'

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • jest如何测试同一模块内的函数依赖?

    jest如何测试同一模块内的函数依赖?

  • mysql修改数据为什么会锁表

    mysql修改数据为什么会锁表

  • 会员体系积分过期策略-求计算公式!!

    会员体系积分过期策略-求计算公式!!

  • JDBC连接的时候为什么要加个时区的东西

    JDBC连接的时候为什么要加个时区的东西

腾讯云代理商
海外云服务器