【问题标题】:What is the correct way to access shared variables inside `jest.mock`?访问`jest.mock`中的共享变量的正确方法是什么?
【发布时间】:2020-05-12 13:35:12
【问题描述】:

我正在尝试在同一个测试文件中的多个 jest.mock 调用之间重用一个变量。

jest.mock 调用被babel-jest 提升到顶部,因此通常不允许访问模拟函数范围之外的变量。但是错误信息说:

这是防止未初始化的模拟变量的预防措施。如果确保延迟需要 mock,则允许以 mock 为前缀的变量名。

因此,如果我在变量前面加上 mock,我将不再收到错误消息,但在 mock 中这些值仍然设置为 undefined。我不明白“懒惰需要”的错误消息是什么意思。是否可以在 jest.mock 调用之间共享变量?

可重现的示例:

const mockReusableValue = { x: 5 };

jest.mock('../someModule', () => {
  console.log(mockReusableValue); // undefined
  return {};
});

【问题讨论】:

    标签: javascript node.js unit-testing jestjs


    【解决方案1】:

    babel-jest 会将模块模拟提升到作用域的顶部,这意味着您可以在外部范围中定义模拟前缀变量,并像这样在模块模拟中重用它

    test.js
    const mockData = 3;
    
    describe('someModule`s someMethod returning mockData', () => {
      jest.mock('./someModule', () => ({
        someMethod: jest.fn().mockReturnValue(mockData)
      }))
    })
    
    

    working example

    【讨论】:

      猜你喜欢
      • 2021-11-04
      • 1970-01-01
      • 2020-08-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多