@cainiaofe/cn-ui-m
Version:
131 lines (130 loc) • 6.39 kB
JavaScript
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*/];
}
});
}); });
});