分享
三行代码  ›  专栏  ›  技术社区  ›  akshat gupta

如何测试一个以玩笑的方式返回匿名函数的函数?

  •  0
  • akshat gupta  · 技术社区  · 1 周前

    我正在测试一个返回匿名函数的函数。我面临的问题是测试没有覆盖返回匿名函数的函数的返回部分。 代码-

    tweenPie = (b) => {
        const { arc } = this;
        b.innerRadius = 0;
        let i = d3.interpolate({ startAngle: 0, endAngle: 0 }, b);
        return (t) => arc(i(t));
      };
    

    测试

      test("spy on tweenPie function", () => {
        const wrapper = setup();
        const spy = jest.spyOn(wrapper.instance(), "tweenPie");
        wrapper.instance().tweenPie({});
        expect(spy).toHaveBeenCalled();
      });
    

    我的测试没有覆盖函数中的行return(t)=>arc(i(t))。怎么做?

    1 回复  |  直到 1 周前
        1
  •  2
  •   Praveenkumar    1 周前

    这个 tweenPie 实际上不返回值,而是返回另一个值 function . 所以,当你打电话 wrapper.instance().tweenPie({}); ,得到的是函数而不是值。

    // Pass some value that corresponds to t in (t) => arc(i(t));
    wrapper.instance().tweenPie({})(t);