我试图测试一个组件,它具有以下代码(缩短),使用服务工作者API“缓存”(https://developer.mozilla.org/en-US/docs/Web/API/Cache),而代码工作得很好,我有麻烦测试它。
React代码:
useEffect(() => {
caches.open(CURRENT_CACHES.backendPlayerInfo).then(async (cache) => {
const url = 'mysite.com/api/myapi';
const response = await cache.match(url);
if(response) {
//use cached response
} else {
//call api
}
...
字符串
在我的Jest单元测试中,我在渲染'cached' is undefined的组件时遇到了一个错误。我可能找错了树,但我决定尝试模仿它,如下所示:
global.caches = {
open: jest.fn().mockResolvedValue({
match: jest.fn(),
put: jest.fn(),
}),
};
型
但是我得到一个错误Cannot read properties of undefined (reading 'then')
什么是正确的方式来模拟/处理服务工作者缓存API?谁能给予我一个例子,我有困难找到任何东西。
1条答案
按热度按时间xxslljrj1#
这是我的测试,失败的错误和你的一样,在设置间谍的时候抛出了一个undefined。
字符串
这将导致与您描述的相同的问题。我通过在
self
上设置一个mock来修复它,这就是我的案例中的service worker(Google的工作框)所使用的。型