当前位置: 首页 > 面试题库 >

开玩笑的测试失败:TypeError:window.matchMedia不是一个函数

东门宜
2023-03-14
问题内容

这是我的第一个前端测试经验。在这个项目中,我正在使用jest快照测试,并且TypeError: window.matchMedia is not a function组件内部出现错误。

我浏览了一些有趣的文档,发现“手动模拟”部分,但是我还不知道该如何做。


问题答案:

开玩笑的文档现在有一个“官方”解决方法:

Object.defineProperty(window, 'matchMedia', {
  writable: true,
  value: jest.fn().mockImplementation(query => ({
    matches: false,
    media: query,
    onchange: null,
    addListener: jest.fn(), // deprecated
    removeListener: jest.fn(), // deprecated
    addEventListener: jest.fn(),
    removeEventListener: jest.fn(),
    dispatchEvent: jest.fn(),
  })),
});

JSDOM中未实现的模拟方法



 类似资料:
  • 这是我第一次体验前端测试。在这个项目中,我使用Jest快照测试并得到一个错误。 我查阅了Jest文档,找到了“手动模拟”部分,但我还不知道如何做到这一点。

  • 问题内容: 我正在尝试为一个简单的React组件编写一个简单的测试,并且我想使用Jest来确认我用酶模拟点击时已调用了一个函数。根据Jest文档,我应该能够使用它:spyOn。 但是,当我尝试此操作时,我不断得到暗示我的间谍未定义的信息。我的代码如下所示: 在我的测试文件中: 有人了解我在做什么错吗? 问题答案: 嗨,伙计,我知道我来晚了,但是除了您的方式之外,您几乎已经完成,没有任何改变。当您使

  • 问题内容: 我有这个反应 在这种情况下,如何测试axios?开玩笑说那里有一个异步代码的用例,在那里他们使用了模拟功能,但是我不知道我是否可以用axios做到这一点?参考:https : //facebook.github.io/jest/docs/tutorial- async.html 到目前为止,我已经测试了它是否返回了正确的类型 我不知道如何传递模拟数据并测试它是否返回,但是有人有任何想法

  • 我怎样才能使jest测试在任何抛出的错误上失败? 我试了一下,但还没有弄清楚语法。 我收到错误消息 getArcId getArcId=&>;错误 expect(received).rejects.ToThrow() 接收的函数未引发 但是下面的测试通过了,所以我要测试的函数确实抛出了(至少在我对抛出含义的最好理解下是这样的):

  • 我有下面的打字稿类,我想测试在笑话。 这是我的测试: 如何模拟MyClass中使用的foo函数,以使测试通过?

  • 我创建了这个类: 在服务中: 我想知道,在开玩笑的情况下,是否可以这样做: