这是我第一次体验前端测试。在这个项目中,我使用Jest快照测试并得到一个错误TypeError:window。matchMedia不是我的组件中的功能
。
我查阅了Jest文档,找到了“手动模拟”部分,但我还不知道如何做到这一点。
我把一个matchMedia存根放在我的Jest测试文件中(在测试上面),它允许测试通过:
window.matchMedia = window.matchMedia || function() {
return {
matches: false,
addListener: function() {},
removeListener: function() {}
};
};
我一直在使用这种技术来解决一堆嘲笑问题。
describe("Test", () => {
beforeAll(() => {
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(),
}))
});
});
});
或者,如果您想一直模拟它,您可以将从包调用的
:mock
文件放入其中。json“SetupFileAfterEnv”:
参考:setupTestFrameworkScriptFile
笑话留档现在有一个“官方”变通方法:
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快照测试,并且组件内部出现错误。 我浏览了一些有趣的文档,发现“手动模拟”部分,但是我还不知道该如何做。 问题答案: 开玩笑的文档现在有一个“官方”解决方法: JSDOM中未实现的模拟方法
我怎样才能使jest测试在任何抛出的错误上失败? 我试了一下,但还没有弄清楚语法。 我收到错误消息 getArcId getArcId=&>;错误 expect(received).rejects.ToThrow() 接收的函数未引发 但是下面的测试通过了,所以我要测试的函数确实抛出了(至少在我对抛出含义的最好理解下是这样的):
问题内容: 我有这个反应 在这种情况下,如何测试axios?开玩笑说那里有一个异步代码的用例,在那里他们使用了模拟功能,但是我不知道我是否可以用axios做到这一点?参考:https : //facebook.github.io/jest/docs/tutorial- async.html 到目前为止,我已经测试了它是否返回了正确的类型 我不知道如何传递模拟数据并测试它是否返回,但是有人有任何想法
问题内容: 我正在尝试为一个简单的React组件编写一个简单的测试,并且我想使用Jest来确认我用酶模拟点击时已调用了一个函数。根据Jest文档,我应该能够使用它:spyOn。 但是,当我尝试此操作时,我不断得到暗示我的间谍未定义的信息。我的代码如下所示: 在我的测试文件中: 有人了解我在做什么错吗? 问题答案: 嗨,伙计,我知道我来晚了,但是除了您的方式之外,您几乎已经完成,没有任何改变。当您使
我有下面的打字稿类,我想测试在笑话。 这是我的测试: 如何模拟MyClass中使用的foo函数,以使测试通过?
如何修复打开stream失败:是一个目录,我用的是< code>ubuntu 16.04和< code>PHP CodeIgniter框架。 法典 我正在尝试生成多个PDF文件,它会生成指定目录中的所有文件,但在过程结束时,它会显示一个名为 " Fopen(/path/)无法打开流:是一个目录" 并且还会抛出一条名为“无法创建输出”的消息