| import { describe, expect, it } from 'vitest' |
| import { createStableObjectKeyResolver } from '@/utils/stableObjectKey' |
|
|
| describe('createStableObjectKeyResolver', () => { |
| it('对同一对象返回稳定 key', () => { |
| const resolve = createStableObjectKeyResolver<{ value: string }>('rule') |
| const obj = { value: 'a' } |
|
|
| const key1 = resolve(obj) |
| const key2 = resolve(obj) |
|
|
| expect(key1).toBe(key2) |
| expect(key1.startsWith('rule-')).toBe(true) |
| }) |
|
|
| it('不同对象返回不同 key', () => { |
| const resolve = createStableObjectKeyResolver<{ value: string }>('rule') |
|
|
| const key1 = resolve({ value: 'a' }) |
| const key2 = resolve({ value: 'a' }) |
|
|
| expect(key1).not.toBe(key2) |
| }) |
|
|
| it('不同 resolver 互不影响', () => { |
| const resolveA = createStableObjectKeyResolver<{ id: number }>('a') |
| const resolveB = createStableObjectKeyResolver<{ id: number }>('b') |
| const obj = { id: 1 } |
|
|
| const keyA = resolveA(obj) |
| const keyB = resolveB(obj) |
|
|
| expect(keyA).not.toBe(keyB) |
| expect(keyA.startsWith('a-')).toBe(true) |
| expect(keyB.startsWith('b-')).toBe(true) |
| }) |
| }) |
|
|