Commit 52d24cecb87523a6656d7c815a8b74ff2192b31e

Authored by zhuqin
1 parent 665391dc

feat: 单元测试 问题修复

@@ -86,7 +86,7 @@ @@ -86,7 +86,7 @@
86 <div class='footer quiet pad2 space-top1 center small'> 86 <div class='footer quiet pad2 space-top1 center small'>
87 Code coverage generated by 87 Code coverage generated by
88 <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a> 88 <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
89 - at 2023-10-09T10:23:14.046Z 89 + at 2023-10-09T11:13:29.172Z
90 </div> 90 </div>
91 <script src="prettify.js"></script> 91 <script src="prettify.js"></script>
92 <script> 92 <script>
@@ -13,21 +13,22 @@ module.exports = { @@ -13,21 +13,22 @@ module.exports = {
13 coverageReporters: ["lcov", "text-summary"], // 配置覆盖率报告的格式 13 coverageReporters: ["lcov", "text-summary"], // 配置覆盖率报告的格式
14 rootDir: "./", 14 rootDir: "./",
15 modulePaths: ["<rootDir>/src/"], 15 modulePaths: ["<rootDir>/src/"],
16 - coveragePathIgnorePatterns: ["/node_modules/"],  
17 - modulePathIgnorePatterns: ["/node_modules/"],  
18 - watchPathIgnorePatterns: ["/node_modules/"], 16 + coveragePathIgnorePatterns: ["<rootDir>/node_modules/"],
  17 + modulePathIgnorePatterns: ["<rootDir>/node_modules/"],
  18 + watchPathIgnorePatterns: ["<rootDir>/node_modules/"],
19 19
20 transform: { 20 transform: {
21 "^.+\\.(ts|tsx)$": "ts-jest", 21 "^.+\\.(ts|tsx)$": "ts-jest",
22 "^.+\\.(js|jsx)$": "babel-jest", 22 "^.+\\.(js|jsx)$": "babel-jest",
23 }, 23 },
24 - transformIgnorePatterns: ['/node_modules/'], 24 + transformIgnorePatterns: ['^(?!(lodash-es).*$)(?=node_modules)'],
25 25
26 testRegex: "(/src/*/.*\\.(test|spec))\\.[tj]sx?$", 26 testRegex: "(/src/*/.*\\.(test|spec))\\.[tj]sx?$",
27 27
28 moduleFileExtensions: ["ts", "tsx", "js", "jsx", "json"], 28 moduleFileExtensions: ["ts", "tsx", "js", "jsx", "json"],
29 moduleNameMapper: { 29 moduleNameMapper: {
30 "^.+\\.(css|less)$": "identity-obj-proxy", 30 "^.+\\.(css|less)$": "identity-obj-proxy",
  31 + "^.+\\.(jpg|jpeg|png|gif|svg)$": '<rootDir>/mock/images/fileMock.js',
31 "antd/es": "<rootDir>/node_modules/antd/dist/antd.min.js", 32 "antd/es": "<rootDir>/node_modules/antd/dist/antd.min.js",
32 }, 33 },
33 testPathIgnorePatterns: ["<rootDir>/node_modules/"], 34 testPathIgnorePatterns: ["<rootDir>/node_modules/"],
@@ -22,6 +22,18 @@ import VarPicker from './var-picker'; @@ -22,6 +22,18 @@ import VarPicker from './var-picker';
22 // }; 22 // };
23 23
24 // "test": "jest --no-cache --config jest.config.js" 24 // "test": "jest --no-cache --config jest.config.js"
  25 +jest.mock('@qx/utils', () => ({
  26 + getWidgetsIcon: () => <span>icon</span>,
  27 +}));
  28 +
  29 +const getByTextWithFallback = (text: any) => {
  30 + try {
  31 + return screen.getByText(text);
  32 + } catch (error) {
  33 + // 如果无法找到精确的文本匹配,尝试使用包含文本的元素
  34 + return screen.getByRole('tree', { name: new RegExp(text) });
  35 + }
  36 +};
25 describe('test component', () => { 37 describe('test component', () => {
26 test('click event', () => { 38 test('click event', () => {
27 render( 39 render(
@@ -161,7 +173,7 @@ describe('test component', () => { @@ -161,7 +173,7 @@ describe('test component', () => {
161 />, 173 />,
162 ); 174 );
163 175
164 - expect(screen.getByText('暂无数据')).toBeNull(); 176 + expect(screen.getByRole('tree')).not.toBeNull();
165 // userEvent.click(screen.getByTestId('clickBtn')); 177 // userEvent.click(screen.getByTestId('clickBtn'));
166 // // 异步 178 // // 异步
167 // await waitFor(() => { 179 // await waitFor(() => {
@@ -45,12 +45,16 @@ export interface FunctionProps { @@ -45,12 +45,16 @@ export interface FunctionProps {
45 funcNameEg: string; 45 funcNameEg: string;
46 } 46 }
47 export interface ColsTreeSelectProps extends TreeDataNode { 47 export interface ColsTreeSelectProps extends TreeDataNode {
48 - attrs?: { titleStr: string; fieldGroupType: FIELD_TYPE_PROPS; key: string }[]; 48 + attrs?: {
  49 + titleStr: string;
  50 + fieldGroupType: 'TEXT' | 'OBJECT' | 'DATE';
  51 + key: string;
  52 + }[];
49 key: string; 53 key: string;
50 titleStr?: string; 54 titleStr?: string;
51 iconName?: string; 55 iconName?: string;
52 widget?: string; 56 widget?: string;
53 - fieldGroupType?: FIELD_TYPE_PROPS; 57 + fieldGroupType?: 'TEXT' | 'OBJECT' | 'DATE';
54 children?: ColsTreeSelectProps[]; 58 children?: ColsTreeSelectProps[];
55 } 59 }
56 60
@@ -64,7 +68,7 @@ interface QxFunOperationProps { @@ -64,7 +68,7 @@ interface QxFunOperationProps {
64 style?: any; 68 style?: any;
65 autofocus?: boolean; 69 autofocus?: boolean;
66 fieldName: string; 70 fieldName: string;
67 - fieldType: FIELD_TYPE_PROPS; 71 + fieldType: 'TEXT' | 'OBJECT' | 'DATE';
68 uniKey: string; 72 uniKey: string;
69 isScriptEditMode?: boolean; 73 isScriptEditMode?: boolean;
70 isInSubForm?: boolean; 74 isInSubForm?: boolean;