javascript - 如何检查多个 Jest spy 调用的多个参数?

标签 javascript typescript unit-testing jasmine jestjs

我在 React 组件中有以下函数:

onUploadStart(file, xhr, formData) {
  formData.append('filename', file.name);
  formData.append('mimeType', file.type);
}

这是我的测试,至少可以调用 spy :

const formData = { append: jest.fn() };
const file = { name: 'someFileName', type: 'someMimeType' };
eventHandlers.onUploadStart(file, null, formData);

expect(formData.append).toHaveBeenCalledWith(
  ['mimeType', 'someMimeType'],
  ['fileName', 'someFileName']
);

但是,断言不起作用:

Expected mock function to have been called with:
 [["mimeType", "someMimeType"], ["fileName", "someFileName"]]
But it was called with:
  ["mimeType", "someMimeType"], ["filename", "someFileName"]

使用toHaveBeenCalledWith的正确方法是什么?

最佳答案

我能够模拟多个调用并以这种方式检查参数:

expect(mockFn.mock.calls).toEqual([
  [arg1, arg2, ...], // First call
  [arg1, arg2, ...]  // Second call
]);

其中 mockFn 是您的模拟函数名称。

关于javascript - 如何检查多个 Jest spy 调用的多个参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40018216/

相关文章:

javascript - 将函数传递给 Angular 验证指令

javascript - 在 php/jquery 中替换或删除字符串中的双引号、单引号

javascript 获取文件类型仅适用于文件名称中包含 1 个点的情况

typescript - 找出 TypeScript 中函数的类型

objective-c - 为什么我的对象的弱委托(delegate)属性在我的单元测试中为 nil?

javascript - 模拟 firebase 模块后模拟 firebase auth 方法的实现

c# - Moq 无法在构造函数中创建具有可为空参数的类的模拟对象

java - 构建丰富的 Web 应用程序有哪些选择?

javascript - FileList 和 File[](又名文件数组)之间有什么区别

angular - 无法在 Angular2 中创建组件