刚开始潜入测试世界,有一件事让我感到困惑。我有这样的课:
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被调用两次。
所以我的问题是,是否有可能以某种方式隔离这些测试?当我运行测试一个(调用一些类方法)时,它不应该影响其他测试结果。
谢谢!
答案 0 :(得分:1)
你是对的,默认情况下,间谍间谍通过你的不同测试保持他们的状态。
要重置它们,我个人使用:
afterEach(() => {
jest.clearAllMocks()
})
有关详细信息,请参阅https://facebook.github.io/jest/docs/en/jest-object.html#jestclearallmocks