javascript - 即使在被叫到之后也预计会被叫到失败

标签 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 |

最佳答案

所以问题是因为它没有等待函数在其自身之前执行,所以它试图执行预期的操作。

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

来自官方的示例片段docs

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

关于javascript - 即使在被叫到之后也预计会被叫到失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58639941/

相关文章:

javascript - 带参数的 Knockout Computed Observable

javascript - 基于 JS 中字符串的一部分的数组的不同值

php - 与我的 PHP 网站一起实现 node.js 和 socket.io

reactjs - 导入图像会破坏 Jest 测试

javascript - JSON.parse(string) 的匹配器 - 如何在运行匹配器之前调用 lambda?

javascript - MongoDB 批量插入操作而不是 For 循环

javascript - node-webkit 与 chrome 浏览器中应用程序的性能

javascript - 如何让我的脚本循环

node.js - 在 Mac 上安装 Angular 时出错

reactjs - 有没有办法测试 Ant Design Modal 参数方法?