模拟APi称笑话

时间:2019-02-14 11:28:04

标签: javascript reactjs redux jestjs

我有一个DataService负责我的API调用-我试图开玩笑地模拟api调用,但似乎不起作用。我不确定自己在做什么错-我的DataService似乎未定义。

这是函数

  it('Data Api end point called with corrent studyId', () => {
    jest.mock(DataService);
    DataService.fetchStepData() = jest.fn()
    CellStepManagementOperations.getStepData(5);
    expect(DataService.fetchStepData).toHaveBeenCalledWith(5);

  });

这是我编写的测试-我很确定自己在嘲笑错误

pubspec.yaml

1 个答案:

答案 0 :(得分:0)

我认为这里的问题是,您正在尝试同步来测试异步动作创建者。因此,您的expect函数不会等待getStepData完成运行。

我不得不执行与您尝试执行的操作非常相似的操作,并且我使用了一个名为redux-testkit的库。请参阅有关使用服务here测试异步操作创建者的部分。您甚至可以为您的API服务设置模拟返回值,在测试时,我发现这非常有用。

使用该库,您可以awaitgetStepData异步操作创建者在运行expect函数之前完成。

您将不得不使用您的代码,但是看起来可能像这样:

it('Data Api end point called with corrent studyId', () => {
  jest.mock(DataService);
  DataService.fetchStepData() = jest.fn()
  const dispatches = await Thunk(CellStepManagementOperations.getStepData).execute(5);
  expect(DataService.fetchStepData).toHaveBeenCalledWith(5);
});