首页 > 解决方案 > Jest 无法读取未定义的属性“导入”

问题描述

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

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()
  …
}

感谢Bergi ,这很好用,但 Jest 绊倒了window.System.import,给了我错误Cannot read property 'import' of undefined。我怎样才能正确地模拟这个?

标签: javascripttypescriptjestjsmockingsystemjs

解决方案


可以像这样模拟 window 属性:

import { System } from 'systemjs'

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

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


推荐阅读