vscode-jest 插件在测试明显失败时显示成功

vscode-jest plugin shows success when the test should clearly fail

我正在使用名为 "Jest" 版本 3.1.1 的 vscode 扩展,其功能之一是在 IDE.[=13= 中显示测试通过和失败的时间。 ]

如果我 运行 通过 yarn test 进行测试,我会得到预期的结果,并且模拟会按预期进行。 如果我单击失败测试上方的 'debug' 并一直单击 运行 测试,它就会通过并按预期进行模拟。

但是,如果我让 IDE 运行 并显示内联 passes/fails,它将无法通过此特定测试,而实际上它应该通过,因为结果取决于模拟值.

失败的发生是因为模拟没有在应该设置的时候设置,因此 运行在这种情况下完全错误的实际代码。

下面是我试图通过 ide 传递的代码片段。

it('should return valid if email or mobile is valid', () => {
    const expectedResult = resultHelper();

    //'This should mock the return value...
    mockValidateEmail.mockReturnValueOnce(resultHelper(true));
    mockValidateMobile.mockReturnValue(resultHelper(false));
    const resultGoodEmail = ValidateBoth('aaa');
    expect(resultGoodEmail).toEqual(expectedResult);

    mockValidateEmail.mockReturnValue(resultHelper(false));
    mockValidateMobile.mockReturnValue(resultHelper(true));
    const resultGoodMobile = ValidateBoth('aaa');

    expect(resultGoodMobile).toEqual(expectedResult);
  });

vscode 前面有什么我遗漏的吗?我不确定在哪里继续寻找。

找到了我自己问题的答案。

vscode-jest 插件将模拟基于显式导入的依赖项,这意味着如果您正在测试使用 import * as _ from '../../validate'; 导入的服务并且您的测试导入 import * as _ from 'validate; \absolute reference 那么 vscode-jest 不会像你期望的那样嘲笑你的依赖。

如果您 运行 yarn test,那么它会像您期望的那样模拟依赖项。 如果您 运行 使用 vscode-jest 扩展的调试器实例,那么它也会像您期望的那样模拟依赖项。

tl;博士; 确保对服务和测试文件使用相同的显式导入。