Skip to content

Commit 734924d

Browse files
committed
更新内存测试:为 createMemoizeDict 添加更多测试用例,验证缓存功能和数据加载逻辑
1 parent 77d83e6 commit 734924d

File tree

1 file changed

+20
-15
lines changed

1 file changed

+20
-15
lines changed

src/index.test.ts

+20-15
Original file line numberDiff line numberDiff line change
@@ -281,24 +281,29 @@ describe('createMemoizeDict', () => {
281281
return mockData;
282282
})
283283

284-
const memoizeDict = createMemoizeDict({
285-
config: new Proxy({},
286-
{
287-
get: (_, key: string) => ({
288-
data: async () => {
289-
return dataFunc(key);
290-
},
291-
}),
292-
}
293-
),
284+
const memoizeDict = createMemoizeDict<{ label: string; value: number; parent: number; }>({
285+
config: new Proxy({}, {
286+
get: (_, key: string) => ({
287+
data: async () => {
288+
return dataFunc(key);
289+
},
290+
}),
291+
}),
294292
})
295293

296-
expect(memoizeDict('test').data).toBeUndefined();
297-
while (!memoizeDict('test').data) {
294+
while (!memoizeDict('test-create').data) {
298295
await new Promise((resolve) => setTimeout(resolve, 1));
299296
}
300-
expect(memoizeDict('test').data).toBe(mockData);
301-
expect(memoizeDict('test').tree).toEqual(mockDataTree);
302-
expect(dataFunc).toBeCalledTimes(1);
297+
expect(memoizeDict('test-create').data).toBe(mockData);
298+
expect(memoizeDict('test-create').tree).toEqual(mockDataTree);
299+
expect(await memoizeDict('test-create').fetch()).toBe(mockData);// 不会再次调用 dataFunc,也就是从缓存中取
300+
expect(memoizeDict('test-create').itemByValue(11)).toBe(mockData[1]);
301+
expect(memoizeDict('test-create').labelByValue(11)).toBe('Item 1-1');
302+
expect(memoizeDict('test-create').labelsByValues([11, 111])).toEqual(['Item 1-1', 'Item 1-1-1']);
303+
expect(memoizeDict('test-create').treeLabelByValue(111)).toBe('Item 1-Item 1-1-Item 1-1-1');
304+
305+
expect(await memoizeDict('test-create').load()).toBe(mockData);// 会再次调用 dataFunc,并更新缓存
306+
expect(memoizeDict('test-create').data).toBeUndefined();
307+
expect(dataFunc).toBeCalledTimes(2);
303308
})
304309
})

0 commit comments

Comments
 (0)