Skip to content

Commit b899d21

Browse files
committed
add jest
1 parent 8b0c38d commit b899d21

10 files changed

+87
-47
lines changed

admin-ui/jest.config.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
module.exports = {
2+
preset: 'ts-jest',
3+
testEnvironment: 'jsdom',
4+
moduleNameMapper: {
5+
'\\.(css|less|scss|sass)$': 'identity-obj-proxy',
6+
},
7+
setupFilesAfterEnv: ['<rootDir>/jest.setup.ts'],
8+
};

admin-ui/jest.config.ts

Lines changed: 0 additions & 41 deletions
This file was deleted.

admin-ui/jest.setup.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import '@testing-library/jest-dom';
2+
3+
Object.defineProperty(window, 'matchMedia', {
4+
writable: true,
5+
value: jest.fn().mockImplementation(query => ({
6+
matches: false,
7+
media: query,
8+
onchange: null,
9+
addListener: jest.fn(), // 旧版 API
10+
removeListener: jest.fn(), // 旧版 API
11+
addEventListener: jest.fn(), // 新版 API
12+
removeEventListener: jest.fn(), // 新版 API
13+
dispatchEvent: jest.fn(),
14+
})),
15+
});

admin-ui/jest/map.test.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import '@testing-library/jest-dom';
2+
3+
4+
test("map", () => {
5+
const map = new Map();
6+
map.set('key', 'value');
7+
expect(map.get('key')).toBe('value');
8+
expect(map.has('key')).toBe(true);
9+
expect(map.size).toBe(1);
10+
map.delete('key');
11+
expect(map.has('key')).toBe(false);
12+
expect(map.size).toBe(0);
13+
})

admin-ui/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@
6666
"@babel/preset-typescript": "^7.26.0",
6767
"@testing-library/dom": "^10.4.0",
6868
"@testing-library/jest-dom": "^6.6.3",
69-
"@testing-library/react": "^16.1.0",
69+
"@testing-library/react": "^16.3.0",
7070
"@types/jest": "^29.5.14",
7171
"@types/lodash": "^4.17.7",
7272
"@types/lodash-es": "^4.17.12",
@@ -85,7 +85,7 @@
8585
"sass": "^1.78.0",
8686
"sass-loader": "^16.0.1",
8787
"style-loader": "^4.0.0",
88-
"ts-jest": "^29.2.5",
88+
"ts-jest": "^29.3.2",
8989
"ts-loader": "^9.5.1",
9090
"ts-node": "^10.9.2",
9191
"webpack": "^5.94.0",

mobile-ui/jest.config.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
module.exports = {
2+
preset: 'ts-jest',
3+
testEnvironment: 'jsdom',
4+
moduleNameMapper: {
5+
'\\.(css|less|scss|sass)$': 'identity-obj-proxy',
6+
},
7+
setupFilesAfterEnv: ['<rootDir>/jest.setup.ts'],
8+
};

mobile-ui/jest.setup.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import '@testing-library/jest-dom';
2+
3+
Object.defineProperty(window, 'matchMedia', {
4+
writable: true,
5+
value: jest.fn().mockImplementation(query => ({
6+
matches: false,
7+
media: query,
8+
onchange: null,
9+
addListener: jest.fn(), // 旧版 API
10+
removeListener: jest.fn(), // 旧版 API
11+
addEventListener: jest.fn(), // 新版 API
12+
removeEventListener: jest.fn(), // 新版 API
13+
dispatchEvent: jest.fn(),
14+
})),
15+
});

mobile-ui/jest/map.test.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import '@testing-library/jest-dom';
2+
3+
4+
test("map", () => {
5+
const map = new Map();
6+
map.set('key', 'value');
7+
expect(map.get('key')).toBe('value');
8+
expect(map.has('key')).toBe(true);
9+
expect(map.size).toBe(1);
10+
map.delete('key');
11+
expect(map.has('key')).toBe(false);
12+
expect(map.size).toBe(0);
13+
})

mobile-ui/package.json

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,9 @@
3636
"scripts": {
3737
"start": "webpack serve --config webpack.config.mock.js --open",
3838
"dev": "webpack serve --config webpack.config.dev.js --open",
39-
"build": "webpack --mode production --config webpack.config.prod.js"
39+
"build": "webpack --mode production --config webpack.config.prod.js",
40+
"test": "jest",
41+
"test:watch": "jest --watchAll"
4042
},
4143
"eslintConfig": {
4244
"extends": [
@@ -59,16 +61,25 @@
5961
"@types/lodash": "^4.17.7",
6062
"@types/lodash-es": "^4.17.12",
6163
"@types/react-resizable": "^3.0.8",
64+
"@testing-library/dom": "^10.4.0",
65+
"@testing-library/jest-dom": "^6.6.3",
66+
"@testing-library/react": "^16.3.0",
67+
"@types/jest": "^29.5.14",
68+
"@types/mockjs": "^1.0.10",
69+
"babel-jest": "^29.7.0",
6270
"clean-webpack-plugin": "^4.0.0",
6371
"copy-webpack-plugin": "^12.0.2",
6472
"css-loader": "^7.1.2",
6573
"express": "^4.21.0",
6674
"html-webpack-plugin": "^5.6.0",
75+
"identity-obj-proxy": "^3.0.0",
76+
"jest": "^29.7.0",
77+
"jest-environment-jsdom": "^29.7.0",
6778
"mockjs": "^1.1.0",
68-
"monaco-editor-webpack-plugin": "^7.1.0",
6979
"sass": "^1.78.0",
7080
"sass-loader": "^16.0.1",
7181
"style-loader": "^4.0.0",
82+
"ts-jest": "^29.3.2",
7283
"ts-loader": "^9.5.1",
7384
"webpack": "^5.94.0",
7485
"webpack-cli": "^5.1.4",

mobile-ui/webpack.common.js

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ const path = require('path');
22
const HtmlWebpackPlugin = require('html-webpack-plugin');
33
const CopyWebpackPlugin = require('copy-webpack-plugin');
44
const {CleanWebpackPlugin} = require('clean-webpack-plugin');
5-
const MonacoWebpackPlugin = require('monaco-editor-webpack-plugin');
65
const ModuleFederationPlugin = require("webpack/lib/container/ModuleFederationPlugin");
76
const {dependencies} = require("./package.json");
87

@@ -56,7 +55,6 @@ module.exports = {
5655
},
5756
plugins: [
5857
new CleanWebpackPlugin(),
59-
new MonacoWebpackPlugin(),
6058
new HtmlWebpackPlugin({
6159
template: './public/index.html',
6260
}),

0 commit comments

Comments
 (0)