xxx看看jest

38 阅读1分钟

import TableSetting from './TableSetting'; // 假设 TableSetting.ts 文件的路径为 './TableSetting'

// 模拟 runtime 接口 const mockRuntime = { postWorkspaceMessage: jest.fn(), };

// 模拟应用设置数据 const mockAppSetting = { myStorageKey: { version: 1, setting: {} }, };

describe('TableSetting', () => { let tableSetting: ReturnType;

beforeEach(() => { // 每次测试前都创建一个新的 TableSetting 实例 tableSetting = TableSetting('myStorageKey', {}, 1); // 设置模拟的 runtime 对象 (tableSetting as any).runtime = mockRuntime; // 使用 as any 来绕过类型检查 });

afterEach(() => { // 清除模拟的 runtime 对象 jest.clearAllMocks(); });

it('initializes correctly', async () => { await tableSetting.init(); // 在初始化时应该调用 postWorkspaceMessage 方法 expect(mockRuntime.postWorkspaceMessage).toHaveBeenCalledWith('getAppSetting'); });

it('gets setting correctly', async () => { // 设置模拟的应用设置数据 mockRuntime.postWorkspaceMessage.mockResolvedValue(mockAppSetting);

const setting = await tableSetting.get();
// 在获取设置时应该调用 postWorkspaceMessage 方法,并返回应用设置中的指定键名的设置信息
expect(mockRuntime.postWorkspaceMessage).toHaveBeenCalledWith('getAppSetting');
expect(setting).toEqual([]);

});

it('sets setting correctly', async () => { const newSetting = [{ id: 1, name: 'Column 1', hide: false }];

await tableSetting.set(newSetting);
// 在设置新设置时应该调用两次 postWorkspaceMessage 方法
expect(mockRuntime.postWorkspaceMessage).toHaveBeenCalledTimes(2);
// 第一次调用时应该传入 'getAppSetting',第二次调用时应该传入 'setAppSetting' 并包含新设置信息
expect(mockRuntime.postWorkspaceMessage).toHaveBeenNthCalledWith(1, 'getAppSetting');
expect(mockRuntime.postWorkspaceMessage).toHaveBeenNthCalledWith(2, 'setAppSetting', {
  data: {
    myStorageKey: { version: 1, setting: newSetting },
  },
});

});

it('resets setting correctly', async () => { await tableSetting.reset(); // 在重置设置时应该调用两次 postWorkspaceMessage 方法 expect(mockRuntime.postWorkspaceMessage).toHaveBeenCalledTimes(2); // 第一次调用时应该传入 'getAppSetting',第二次调用时应该传入 'setAppSetting' 并包含空设置信息 expect(mockRuntime.postWorkspaceMessage).toHaveBeenNthCalledWith(1, 'getAppSetting'); expect(mockRuntime.postWorkspaceMessage).toHaveBeenNthCalledWith(2, 'setAppSetting', { data: { myStorageKey: { version: 1, setting: {} }, }, }); }); });