测试中的多个方法调用导致错误的期望

时间:2017-11-26 15:16:13

标签: javascript unit-testing jest

刚开始潜入测试世界,有一件事让我感到困惑。我有这样的课:

class TestClass {
  static staticMethod () {
    methodOne();
    methodTwo();
}

并像这样测试:

test('should call methodOne function', () => {
  TestClass.staticMethod();
  expect(methodOne).toHaveBeenCalled();
});

test('should call methodTwo function', () => {
  Test.staticMethod();
  expect(methodTwo).toHaveBeenCalled();
  expect(methodTwo).toHaveBeenCalledTimes(1);
});

Jest抛出一个错误,表示methodTwo被调用了两次而不是一次。我想,因为我正在运行两次调试类静态方法两次(第一次测试一次,第二次测试第二次),因此methodTwo被调用两次。

所以我的问题是,是否有可能以某种方式隔离这些测试?当我运行测试一个(调用一些类方法)时,它不应该影响其他测试结果。

谢谢!

1 个答案:

答案 0 :(得分:1)

你是对的,默认情况下,间谍间谍通过你的不同测试保持他们的状态。

要重置它们,我个人使用:

afterEach(() => {
  jest.clearAllMocks()
})

有关详细信息,请参阅https://facebook.github.io/jest/docs/en/jest-object.html#jestclearallmocks