【问题标题】:Jest `mock.calls` empty with mocked typescript class用模拟的打字稿类开玩笑“mock.calls”为空
【发布时间】:2018-12-10 17:03:16
【问题描述】:

我有一个打字稿类EntityConfigurationMapper,带有一个map 方法。我在我的 Jest 测试中像这样嘲笑它:

const mock = jest.fn<EntityConfigurationMapper>()
      .mockImplementation(() => ({
        map: (conf): Entity => {
          return {...};
        }
      }));
const instance = new entityConfigurationMapperMock();

然后它被使用等等。

我想检查调用,which should be like mock.calls[0][0] 等。但是,mock.calls 是一个空数组。

我在模拟的map 方法中放置了一个控制台,它按预期输出,所以模拟调用了模拟的实现,只是没有将它记录在calls 数组中。

知道为什么calls 会是空的吗?

【问题讨论】:

    标签: typescript jestjs


    【解决方案1】:

    啊,在this 的帮助下解决了。您必须使用 jest.fn 来模拟函数调用以及类:

    const map = jest.fn((conf, ids): Entity  => {
      return {...};
    })
    
    const mock = jest.fn<EntityConfigurationMapper>()
        .mockImplementation(() => ({
          map
        }));
    const instance = new entityConfigurationMapperMock();
    

    然后您可以调查map 上的呼叫:

    map.mock.calls
    

    【讨论】:

      猜你喜欢
      • 2019-02-06
      • 2018-09-16
      • 2019-02-26
      • 2020-01-07
      • 2021-01-09
      • 2020-07-09
      • 2021-10-26
      • 2017-10-02
      • 2021-12-09
      相关资源
      最近更新 更多