Jest 无法读取未定义的 属性 'import'

Jest cannot read property 'import' of undefined

我有以下代码来异步加载依赖项:

declare global {
  interface Window {
    System: System.Module
  }
}

const fooService = window.System.import('@internal/foo-service').then(module => module.FooService)
//                              ^ Jest trips up here

async function func1() {
  (await fooService).doBar()
  …
}

async function func2() {
  (await fooService).doBar2()
  …
}

感谢 ,这工作正常,但 Jest 在 window.System.import 上绊倒了,并给我错误 Cannot read property 'import' of undefined。我怎样才能正确地模拟这个?

window 属性 可以这样嘲笑:

import { System } from 'systemjs'

Object.defineProperty(window, 'System', { value: System })

出于某种原因我无法解释,这需要在导入 (!) 正在测试的组件之前发生。