类型错误:j.window.matchMedia 不是函数

Sha*_*tha 1 testing typescript jestjs angular

我已经针对找不到“window.matchMedia”的问题TypeError: j.window.MatchMedia is not a function实现了 Maxime 的解决方案,但是当我运行测试时,出现此错误: 。

我不确定我需要做什么才能解决“j”,因为如果我改变第一行

Object.defineProperties(window, "matchMedia" {

到

Object.defineProperties(j.window, "matchMedia" {

Jest 告诉我它无法解析“j”,这是有道理的,但不能帮助我理解和修复错误。

Gav*_*bor 5

在简单研究了笑话解决方案和文档之后,了解了它是如何成为一个模拟函数的……所以这个变量也可以模拟一个函数。

 let mock = () => {}
Run Code Online (Sandbox Code Playgroud)

解决了此 TypeError,除了 Angular/universal server.ts 10 上的 j

Object.defineProperty(window, 'matchMedia', {
  writable: true,
  value: (query: any) => { return {
  matches: false,
  media: query,
  onchange: null,
  addListener: mock, // deprecated         
  removeListener: mock, // deprecated
  addEventListener: mock,
  removeEventListener: mock,
  dispatchEvent: mock,
 }}
});
Run Code Online (Sandbox Code Playgroud)