Forráskód Böngészése

封装e2e路由拦截

xyh 2 éve
szülő
commit
5398d78ceb

+ 2 - 1
.gitignore

@@ -3,4 +3,5 @@ build
 .temp-cache
 analyzer
 coverage
-.swc
+.swc
+cypress/videos

+ 7 - 6
cypress/e2e/department.cy.ts

@@ -2,12 +2,13 @@ import {
   loginIntercept,
   menuIntercept,
   loginSetup,
-  NETWORK_URL,
   menuTrigger,
   validateTableSearch,
   validateTableList,
   validatePut,
   validateDelete,
+  successIntercept,
+  intercept,
 } from './utils';
 
 describe('部门管理', function() {
@@ -19,8 +20,8 @@ describe('部门管理', function() {
   });
 
   beforeEach(function() {
-    cy.intercept(
-      `${NETWORK_URL}/department/getDepartment*`,
+    intercept(
+      '/department/getDepartment',
       function({url: reqUrl, reply}) {
         const url = new URL(reqUrl);
         const search = new URLSearchParams(url.search);
@@ -35,9 +36,9 @@ describe('部门管理', function() {
       },
     );
 
-    cy.intercept(`${NETWORK_URL}/department/addDepartment*`, {fixture: 'success', delay: 100});
-    cy.intercept(`${NETWORK_URL}/department/updateDepartment*`, {fixture: 'success', delay: 100});
-    cy.intercept(`${NETWORK_URL}/department/delDepartment*`, {fixture: 'success', delay: 100});
+    successIntercept('/department/addDepartment');
+    successIntercept('/department/updateDepartment');
+    successIntercept('/department/delDepartment');
   });
 
   it('部门列表', function() {

+ 6 - 6
cypress/e2e/goods.cy.ts

@@ -2,7 +2,6 @@ import {
   loginIntercept,
   menuIntercept,
   loginSetup,
-  NETWORK_URL,
   optionsIntercept,
   menuTrigger,
   selectClick,
@@ -11,6 +10,8 @@ import {
   validatePut,
   validateTableList,
   validateTableSearch,
+  successIntercept,
+  intercept,
 } from './utils';
 
 describe('货品管理', function() {
@@ -23,7 +24,7 @@ describe('货品管理', function() {
   });
 
   beforeEach(function() {
-    cy.intercept(`${NETWORK_URL}/goods/getGoods*`, function({url: reqUrl, reply}) {
+    intercept('/goods/getGoods', function({url: reqUrl, reply}) {
       const url = new URL(reqUrl);
       const search = new URLSearchParams(url.search);
 
@@ -33,10 +34,9 @@ describe('货品管理', function() {
       const page = search.get('page');
       reply({fixture: page === '1' ? 'goods/list1' : 'goods/list2'});
     });
-
-    cy.intercept(`${NETWORK_URL}/goods/addGoods*`, {fixture: 'success', delay: 100});
-    cy.intercept(`${NETWORK_URL}/goods/delGoods*`, {fixture: 'success', delay: 100});
-    cy.intercept(`${NETWORK_URL}/goods/updateGoods*`, {fixture: 'success', delay: 100});
+    successIntercept('/goods/addGoods');
+    successIntercept('/goods/delGoods');
+    successIntercept('/goods/updateGoods');
   });
 
   it('表格', function() {

+ 8 - 7
cypress/e2e/role.cy.ts

@@ -2,12 +2,14 @@ import {
   loginIntercept,
   menuIntercept,
   loginSetup,
-  NETWORK_URL,
   menuTrigger,
   validateDelete,
   validatePut,
   validateTableList,
   validateTableSearch,
+  successIntercept,
+  normalIntercept,
+  intercept,
 } from './utils';
 
 describe('角色管理', function() {
@@ -19,7 +21,7 @@ describe('角色管理', function() {
   });
 
   beforeEach(function() {
-    cy.intercept(`${NETWORK_URL}/role/getRole*`, function({url: reqUrl, reply}) {
+    intercept('/role/getRole', function({url: reqUrl, reply}) {
       const url = new URL(reqUrl);
       const search = new URLSearchParams(url.search);
 
@@ -30,11 +32,10 @@ describe('角色管理', function() {
       reply({fixture: page === '1' ? 'role/list1' : 'role/list2'});
     });
 
-    cy.intercept(`${NETWORK_URL}/role/addRole*`, {fixture: 'success', delay: 100});
-    cy.intercept(`${NETWORK_URL}/role/updateRole*`, {fixture: 'success', delay: 100});
-    cy.intercept(`${NETWORK_URL}/role/delRole*`, {fixture: 'success', delay: 100});
-    cy.intercept(`${NETWORK_URL}/role/updateRole*`, {fixture: 'success', delay: 100});
-    cy.intercept(`${NETWORK_URL}/menu/getMenu*`, {fixture: 'menu/all'});
+    successIntercept('/role/addRole');
+    successIntercept('/role/updateRole');
+    successIntercept('/role/delRole');
+    normalIntercept('/menu/getMenu', 'menu/all');
   });
 
   it('角色列表', function() {

+ 7 - 15
cypress/e2e/storage.cy.ts

@@ -1,5 +1,4 @@
 import {
-  NETWORK_URL,
   loginIntercept,
   loginSetup,
   menuIntercept,
@@ -10,6 +9,8 @@ import {
   validatePut,
   validateTableList,
   validateTableSearch,
+  successIntercept,
+  intercept,
 } from './utils';
 
 describe('库位管理', function() {
@@ -21,8 +22,8 @@ describe('库位管理', function() {
   });
 
   beforeEach(function() {
-    cy.intercept(
-      `${NETWORK_URL}/storage/getStorage*`,
+    intercept(
+      '/storage/getStorage',
       function({url: reqUrl, reply}) {
         const url = new URL(reqUrl);
         const search = new URLSearchParams(url.search);
@@ -44,18 +45,9 @@ describe('库位管理', function() {
       },
     );
 
-    cy.intercept(`${NETWORK_URL}/storage/addStorage*`, {
-      fixture: 'success',
-      delay: 100,
-    });
-    cy.intercept(`${NETWORK_URL}/storage/updateStorage*`, {
-      fixture: 'success',
-      delay: 100,
-    });
-    cy.intercept(`${NETWORK_URL}/storage/delStorage*`, {
-      fixture: 'success',
-      delay: 100,
-    });
+    successIntercept('/storage/addStorage');
+    successIntercept('/storage/updateStorage');
+    successIntercept('/storage/delStorage');
   });
 
   it('表格', function() {

+ 7 - 24
cypress/e2e/user.cy.ts

@@ -1,5 +1,4 @@
 import {
-  NETWORK_URL,
   loginIntercept,
   loginSetup,
   menuIntercept,
@@ -11,6 +10,8 @@ import {
   validatePut,
   validateTableList,
   validateTableSearch,
+  successIntercept,
+  intercept,
 } from './utils';
 
 describe('用户管理', function() {
@@ -23,8 +24,8 @@ describe('用户管理', function() {
   });
 
   beforeEach(function() {
-    cy.intercept(
-      `${NETWORK_URL}/user/getAllUser*`,
+    intercept(
+      '/user/getAllUser',
       function({reply, url: reqUrl}) {
         const url = new URL(reqUrl);
         const search = new URLSearchParams(url.search);
@@ -41,27 +42,9 @@ describe('用户管理', function() {
         reply({fixture: page === '1' ? 'user/userList1' : 'user/userList2'});
       },
     );
-
-    cy.intercept(
-      `${NETWORK_URL}/user/delUser*`,
-      function({reply}) {
-        reply({fixture: 'success', delay: 100});
-      },
-    );
-
-    cy.intercept(
-      `${NETWORK_URL}/user/addUser*`,
-      function({reply}) {
-        reply({fixture: 'success', delay: 100});
-      },
-    );
-
-    cy.intercept(
-      `${NETWORK_URL}/user/updateUser*`,
-      function({reply}) {
-        reply({fixture: 'success', delay: 100});
-      },
-    );
+    successIntercept('/user/delUser');
+    successIntercept('/user/addUser');
+    successIntercept('/user/updateUser');
   });
 
   it('用户列表', function() {

+ 43 - 6
cypress/e2e/utils/setup.ts

@@ -1,4 +1,41 @@
-export const NETWORK_URL = 'http://*';
+import {CyHttpMessages, RouteHandler} from 'cypress/types/net-stubbing';
+
+function parseUrl(url: string) {
+  return `http://*${
+    url.indexOf('/') === 0 ? '' : '/'
+  }${url}${
+    url.includes('*') ? '' : '*'
+  }`;
+}
+
+export function normalIntercept(
+  url: string,
+  fixture: string,
+  options?: Omit<RouteHandler, 'fixture'>,
+) {
+  return cy.intercept(
+    parseUrl(url),
+    {fixture, ...(options ?? {})},
+  );
+}
+
+export function successIntercept(url: string) {
+  return normalIntercept(
+    url,
+    'success',
+    {delay: 100},
+  );
+}
+
+export function intercept(
+  url: string,
+  response: (e: CyHttpMessages.IncomingHttpRequest) => void,
+) {
+  cy.intercept(
+    parseUrl(url),
+    response,
+  );
+}
 
 export function loginSetup() {
   cy.visit('/');
@@ -10,17 +47,17 @@ export function loginSetup() {
 }
 
 export function loginIntercept() {
-  cy.intercept(`${NETWORK_URL}/user/login*`, {fixture: 'login'}).as('loginIntercept');
+  normalIntercept('/user/login', 'login').as('loginIntercept');
 }
 
 export function menuIntercept() {
-  cy.intercept(`${NETWORK_URL}/menu/getUserMenu*`, {fixture: 'menu/basic'})
+  normalIntercept('/menu/getUserMenu', 'menu/basic')
     .as('menuIntercept');
 }
 
 export function optionsIntercept() {
-  cy.intercept(`${NETWORK_URL}/role/roleBefore*`, {fixture: 'role/options'});
-  cy.intercept(`${NETWORK_URL}/department/getDepartBefor*`, {fixture: 'department/options'});
-  cy.intercept(`${NETWORK_URL}/storage/getStorageAll*`, {fixture: 'storage/options'});
+  normalIntercept('/role/roleBefore', 'role/options');
+  normalIntercept('/department/getDepartBefor', 'department/options');
+  normalIntercept('/storage/getStorageAll', 'storage/options');
 }
 

+ 1 - 1
package.json

@@ -24,7 +24,7 @@
     "test:watch": "pnpm -F app test:watch",
     "test:coverage": "pnpm -F app test:coverage",
     "e2e": "cypress open",
-    "e2e:run": "cypress run -b chorme"
+    "e2e:run": "cypress run -b chrome"
   },
   "devDependencies": {
     "@types/jest": "^29.2.5",