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”,这是有道理的,但不能帮助我理解和修复错误。
在简单研究了笑话解决方案和文档之后,了解了它是如何成为一个模拟函数的……所以这个变量也可以模拟一个函数。
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)