开玩笑:模拟const未定义

时间:2020-07-07 13:10:24

标签: mocking jestjs

我正在开玩笑地从依赖模块中模拟常量:

const MOCK_CONTEXT = {
  eventName: 'eventName'
}

jest.mock('@actions/github/lib/github', function () {
  return {
    context: MOCK_CONTEXT
  }
})

但是我得到一个错误

ReferenceError:未定义CONTEXT_MOCK

这是什么问题,怎么会发生?

如果我不引用已经存在的常量,则一切正常。 此代码也可以正常工作:

const MOCK_INPUT = {
  GITHUB_TOKEN: 'GITHUB_TOKEN'
}
jest.mock('../src/action-inputs', () => ({ getInputs: () => MOCK_INPUT }))

有什么解决方法可以实现我想要的吗?

1 个答案:

答案 0 :(得分:0)

jest.mock将工厂函数作为第二个参数。这是一个高阶函数,应该返回一个函数,该函数返回一个模拟值。

因此您的代码应如下所示:

jest.mock('@actions/github/lib/github', function () {
  return () => ({
    context: MOCK_CONTEXT
  });
})

测试文件中的导入路径应完全为@actions/github/lib/github