【发布时间】:2023-01-04 16:57:19
【问题描述】:
我创建了一个允许管理缓存的函数。
我使用此函数来缓存对 API 调用的响应。
export const cache = async (key: string, callback: Function) => {
const cacheKey = `cache:${key}`;
const data = await useStorage().getItem(cacheKey);
if (data) {
console.log('Get cached data for key: %s', key);
return data;
}
const result = await callback();
console.log('Caching data for key: %s', key);
await useStorage().setItem(cacheKey, result);
return result;
}
这是一个用例:
import { cache } from '~/server/lib/caching/cache-manager';
export default defineEventHandler(async (event) => {
const config = useRuntimeConfig();
const domain = event.context.params.domain;
const id = event.context.params.id;
const url = `${config.baseUrl}/api/${domain}/${id}`;
return await cache(url, () => {
return $fetch(url);
});
})
我想用 vitest 测试“缓存”功能。
有关信息,我添加了一个 vitest 插件来管理 Nuxt 别名和自动导入,基于
https://github.com/nuxt/framework/discussions/5379#discussioncomment-4224823
这是测试,它什么都不做,它只是调用“缓存”函数:
import { describe, beforeEach, afterEach, test, expect, vi } from 'vitest'
import { cache } from '~/server/lib/caching/cache-manager'
describe('My test', () => {
test('my test', () => {
const result1 = cache('mykey', () => 3);
const result2 = cache('mykey', () => 3);
})
})
但是当我调用缓存函数时出现错误:
ReferenceError: useStorage is not defined
无法识别 Nitro 的 useStorage。
我认为问题与不包括服务器自动导入的#imports有关。
我测试了以下解决方法,但它仍然不起作用:
https://github.com/nuxt/framework/issues/4290
如何测试使用“useStorage”的“缓存”功能?
【问题讨论】:
标签: typescript nuxt.js nuxtjs3 vitest nitro