UNPKG

@cainiaofe/cn-ui-m

Version:
131 lines (130 loc) 6.39 kB
import { __awaiter, __generator } from "tslib"; import { renderHook, act } from '@testing-library/react-hooks'; import { CardItems } from '../card-items'; describe('CnCardItems.useRemote', function () { it('应该正确初始化 ref', function () { var result = renderHook(function () { return CardItems.useRemote(); }).result; expect(result.current.ref).toBeDefined(); expect(result.current.ref.current).toMatchObject({}); }); it('应该在 ref.current 存在 refresh 方法时调用 refresh', function () { return __awaiter(void 0, void 0, void 0, function () { var mockRefresh, result; return __generator(this, function (_a) { switch (_a.label) { case 0: mockRefresh = jest.fn(); result = renderHook(function () { return CardItems.useRemote(); }).result; // 模拟 ref.current 有 refresh 方法 act(function () { result.current.ref.current.refresh = mockRefresh; }); // 调用 refresh 方法 return [4 /*yield*/, act(function () { return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, result.current.refresh()]; case 1: _a.sent(); return [2 /*return*/]; } }); }); })]; case 1: // 调用 refresh 方法 _a.sent(); expect(mockRefresh).toHaveBeenCalled(); return [2 /*return*/]; } }); }); }); it('应该在 ref.current 不存在 refresh 方法时不调用 refresh', function () { return __awaiter(void 0, void 0, void 0, function () { var mockRefresh, result; return __generator(this, function (_a) { switch (_a.label) { case 0: mockRefresh = jest.fn(); result = renderHook(function () { return CardItems.useRemote(); }).result; // 确保 ref.current 没有 refresh 方法 act(function () { result.current.ref.current.refresh = undefined; }); // 尝试调用 refresh 方法 return [4 /*yield*/, act(function () { return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, result.current.refresh()]; case 1: _a.sent(); return [2 /*return*/]; } }); }); })]; case 1: // 尝试调用 refresh 方法 _a.sent(); expect(mockRefresh).not.toHaveBeenCalled(); return [2 /*return*/]; } }); }); }); it('应该在 ref.current 存在 load 方法时调用 load', function () { return __awaiter(void 0, void 0, void 0, function () { var mockLoad, result; return __generator(this, function (_a) { switch (_a.label) { case 0: mockLoad = jest.fn(); result = renderHook(function () { return CardItems.useRemote(); }).result; // 模拟 ref.current 有 load 方法 act(function () { result.current.ref.current.load = mockLoad; }); // 调用 load 方法 return [4 /*yield*/, act(function () { return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, result.current.load()]; case 1: _a.sent(); return [2 /*return*/]; } }); }); })]; case 1: // 调用 load 方法 _a.sent(); expect(mockLoad).toHaveBeenCalled(); return [2 /*return*/]; } }); }); }); it('应该在 ref.current 不存在 load 方法时不调用 load', function () { return __awaiter(void 0, void 0, void 0, function () { var mockLoad, result; return __generator(this, function (_a) { switch (_a.label) { case 0: mockLoad = jest.fn(); result = renderHook(function () { return CardItems.useRemote(); }).result; // 确保 ref.current 没有 load 方法 act(function () { result.current.ref.current.load = undefined; }); // 尝试调用 load 方法 return [4 /*yield*/, act(function () { return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, result.current.load()]; case 1: _a.sent(); return [2 /*return*/]; } }); }); })]; case 1: // 尝试调用 load 方法 _a.sent(); expect(mockLoad).not.toHaveBeenCalled(); return [2 /*return*/]; } }); }); }); });