即使被呼叫后,也期望被称为失败

时间:2019-10-31 09:08:47

标签: javascript node.js jestjs

我在Jest中有一个测试用例代码。

let ticketsTransformer = new TicketTransformer();
    ticketsTransformer.transform = jest.fn(() => results);
expect(ticketsTransformer.transform).toHaveBeenCalled();

const synchronizer = new Synchronizer(
        client,
        ticketsTransformer,
        jest.mock(),
        persister,
        jest.mock()
    );
synchronizer.sync("1999-01-01");
    expect(ticketsTransformer.transform).toHaveBeenCalled();

sync方法中,我尝试进行console.log(this.ticketTransformer.transform()),它给我提供了存储在results变量中的相同结果,这意味着该方法已按预期方式被调用。但是我不确定为什么我的测试用例仍然失败并抱怨

   Expected number of calls: >= 1
   Received number of calls:    0

      72 |  );
      73 |  synchronizer.sync("1999-01-01");
    > 74 |  expect(ticketsTransformer.transform).toHaveBeenCalled();
         |                                       ^
      75 | });
      76 |

1 个答案:

答案 0 :(得分:1)

所以问题在于,因为它没有在等待函数执行之前就试图实现期望。

因此,为了等待,您可以使用async和await,也可以使用断言来检查promise调用

来自官方docs

示例代码段

it('works with async/await', async () => {
  expect.assertions(1);
  const data = await user.getUserName(4);
  expect(data).toEqual('Mark');
});