优化
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
import { fetchLinkPreview } from '../fetchLinkPreview';
|
||||
|
||||
const mockGetLinkPreviewFn = jest.fn();
|
||||
jest.mock('link-preview-js', () => ({
|
||||
getLinkPreview: async () => {
|
||||
mockGetLinkPreviewFn();
|
||||
},
|
||||
}));
|
||||
|
||||
describe('Test "fetchLinkPreview"', () => {
|
||||
test(
|
||||
'fetchLinkPreview should merge same request',
|
||||
async () => {
|
||||
await Promise.all([
|
||||
fetchLinkPreview('foo'),
|
||||
fetchLinkPreview('foo'),
|
||||
fetchLinkPreview('foo'),
|
||||
fetchLinkPreview('foo'),
|
||||
fetchLinkPreview('foo'),
|
||||
fetchLinkPreview('foo'),
|
||||
fetchLinkPreview('foo'),
|
||||
fetchLinkPreview('foo'),
|
||||
]);
|
||||
|
||||
expect(mockGetLinkPreviewFn.mock.calls.length).toBe(1);
|
||||
|
||||
await sleep(5 * 1000); // 度过窗口期
|
||||
|
||||
await Promise.all([
|
||||
fetchLinkPreview('foo'),
|
||||
fetchLinkPreview('foo'),
|
||||
fetchLinkPreview('foo'),
|
||||
fetchLinkPreview('foo'),
|
||||
fetchLinkPreview('foo'),
|
||||
fetchLinkPreview('foo'),
|
||||
fetchLinkPreview('foo'),
|
||||
fetchLinkPreview('foo'),
|
||||
]);
|
||||
|
||||
expect(mockGetLinkPreviewFn.mock.calls.length).toBe(2);
|
||||
},
|
||||
10 * 1000
|
||||
);
|
||||
});
|
||||
|
||||
function sleep(ms: number): Promise<void> {
|
||||
return new Promise((resolve) =>
|
||||
setTimeout(() => {
|
||||
resolve();
|
||||
}, ms)
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user