如何编写一个测试用笑话和酶调用另一个函数?

时间:2018-07-04 12:57:05

标签: javascript unit-testing jestjs enzyme

我正在使用笑话和酶来测试我的应用。我的功能是:

const someFunc = (arg1, arg2, arg3) => {
    arg2.someOtherFunc(arg3);
}

现在,我想编写函数someFunc的测试,我模拟了someOtherFunc,然后测试是否要用一些arg3调用它,但是我无法了解应该写断言?

我的测试应该断言在someFunc之后,它应该使用一些参数来调用someOtherFunc

2 个答案:

答案 0 :(得分:1)

您可以使用toHaveBeenCalledWith()

expect(someOtherFunc).toHaveBeenCalledWith('your args');

答案 1 :(得分:1)

在您的情况下,您要将函数作为回调传递 并且在测试中,您必须模拟它,并检查它是否被调用了n次或被调用了n次或使用特定参数进行了调用。

在下面检查此示例:

// your function
const someFunc = (arg1, arg2, arg3) => {
  arg2.someOtherFunc(arg3);
}

// your test file
it("works", () => {
  const arg1 = 'im just any value doesnt matter';
  const arg2 = {
      someOtherFunc: jest.fn(),
    };
  const arg3 = 'argument';

  someFunc(arg1, arg2, arg3);

  // some assertions you can use
  expect(arg2.someOtherFunc).toBeCalled();
  expect(arg2.someOtherFunc).toBeCalledWith('argument');
  expect(arg2.someOtherFunc).toHaveBeenCalledTimes(1);
});