@eggjs/mock 6.0.0-beta.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (159) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +547 -0
  3. package/README.zh_CN.md +512 -0
  4. package/dist/commonjs/app/extend/agent.d.ts +33 -0
  5. package/dist/commonjs/app/extend/agent.js +49 -0
  6. package/dist/commonjs/app/extend/application.d.ts +175 -0
  7. package/dist/commonjs/app/extend/application.js +448 -0
  8. package/dist/commonjs/app/middleware/cluster_app_mock.d.ts +3 -0
  9. package/dist/commonjs/app/middleware/cluster_app_mock.js +100 -0
  10. package/dist/commonjs/app.d.ts +6 -0
  11. package/dist/commonjs/app.js +20 -0
  12. package/dist/commonjs/bootstrap.d.ts +4 -0
  13. package/dist/commonjs/bootstrap.js +58 -0
  14. package/dist/commonjs/index.d.ts +76 -0
  15. package/dist/commonjs/index.js +99 -0
  16. package/dist/commonjs/index.test-d.d.ts +1 -0
  17. package/dist/commonjs/index.test-d.js +43 -0
  18. package/dist/commonjs/lib/agent_handler.d.ts +3 -0
  19. package/dist/commonjs/lib/agent_handler.js +28 -0
  20. package/dist/commonjs/lib/app.d.ts +28 -0
  21. package/dist/commonjs/lib/app.js +303 -0
  22. package/dist/commonjs/lib/app_handler.d.ts +5 -0
  23. package/dist/commonjs/lib/app_handler.js +67 -0
  24. package/dist/commonjs/lib/cluster.d.ts +114 -0
  25. package/dist/commonjs/lib/cluster.js +337 -0
  26. package/dist/commonjs/lib/context.d.ts +1 -0
  27. package/dist/commonjs/lib/context.js +16 -0
  28. package/dist/commonjs/lib/format_options.d.ts +5 -0
  29. package/dist/commonjs/lib/format_options.js +100 -0
  30. package/dist/commonjs/lib/inject_context.d.ts +6 -0
  31. package/dist/commonjs/lib/inject_context.js +132 -0
  32. package/dist/commonjs/lib/mock_agent.d.ts +5 -0
  33. package/dist/commonjs/lib/mock_agent.js +49 -0
  34. package/dist/commonjs/lib/mock_custom_loader.d.ts +1 -0
  35. package/dist/commonjs/lib/mock_custom_loader.js +37 -0
  36. package/dist/commonjs/lib/mock_http_server.d.ts +2 -0
  37. package/dist/commonjs/lib/mock_http_server.js +24 -0
  38. package/dist/commonjs/lib/mock_httpclient.d.ts +35 -0
  39. package/dist/commonjs/lib/mock_httpclient.js +147 -0
  40. package/dist/commonjs/lib/parallel/agent.d.ts +20 -0
  41. package/dist/commonjs/lib/parallel/agent.js +125 -0
  42. package/dist/commonjs/lib/parallel/app.d.ts +20 -0
  43. package/dist/commonjs/lib/parallel/app.js +115 -0
  44. package/dist/commonjs/lib/parallel/util.d.ts +3 -0
  45. package/dist/commonjs/lib/parallel/util.js +77 -0
  46. package/dist/commonjs/lib/prerequire.d.ts +1 -0
  47. package/dist/commonjs/lib/prerequire.js +26 -0
  48. package/dist/commonjs/lib/request_call_function.d.ts +1 -0
  49. package/dist/commonjs/lib/request_call_function.js +52 -0
  50. package/dist/commonjs/lib/restore.d.ts +1 -0
  51. package/dist/commonjs/lib/restore.js +16 -0
  52. package/dist/commonjs/lib/start-cluster.d.ts +2 -0
  53. package/dist/commonjs/lib/start-cluster.js +23 -0
  54. package/dist/commonjs/lib/supertest.d.ts +11 -0
  55. package/dist/commonjs/lib/supertest.js +48 -0
  56. package/dist/commonjs/lib/tmp/empty.d.ts +1 -0
  57. package/dist/commonjs/lib/tmp/empty.js +3 -0
  58. package/dist/commonjs/lib/types.d.ts +60 -0
  59. package/dist/commonjs/lib/types.js +3 -0
  60. package/dist/commonjs/lib/utils.d.ts +9 -0
  61. package/dist/commonjs/lib/utils.js +80 -0
  62. package/dist/commonjs/package.json +3 -0
  63. package/dist/commonjs/register.d.ts +8 -0
  64. package/dist/commonjs/register.js +80 -0
  65. package/dist/esm/app/extend/agent.d.ts +33 -0
  66. package/dist/esm/app/extend/agent.js +46 -0
  67. package/dist/esm/app/extend/application.d.ts +175 -0
  68. package/dist/esm/app/extend/application.js +442 -0
  69. package/dist/esm/app/middleware/cluster_app_mock.d.ts +3 -0
  70. package/dist/esm/app/middleware/cluster_app_mock.js +98 -0
  71. package/dist/esm/app.d.ts +6 -0
  72. package/dist/esm/app.js +17 -0
  73. package/dist/esm/bootstrap.d.ts +4 -0
  74. package/dist/esm/bootstrap.js +16 -0
  75. package/dist/esm/index.d.ts +76 -0
  76. package/dist/esm/index.js +90 -0
  77. package/dist/esm/index.test-d.d.ts +1 -0
  78. package/dist/esm/index.test-d.js +42 -0
  79. package/dist/esm/lib/agent_handler.d.ts +3 -0
  80. package/dist/esm/lib/agent_handler.js +24 -0
  81. package/dist/esm/lib/app.d.ts +28 -0
  82. package/dist/esm/lib/app.js +295 -0
  83. package/dist/esm/lib/app_handler.d.ts +5 -0
  84. package/dist/esm/lib/app_handler.js +61 -0
  85. package/dist/esm/lib/cluster.d.ts +114 -0
  86. package/dist/esm/lib/cluster.js +328 -0
  87. package/dist/esm/lib/context.d.ts +1 -0
  88. package/dist/esm/lib/context.js +13 -0
  89. package/dist/esm/lib/format_options.d.ts +5 -0
  90. package/dist/esm/lib/format_options.js +94 -0
  91. package/dist/esm/lib/inject_context.d.ts +6 -0
  92. package/dist/esm/lib/inject_context.js +126 -0
  93. package/dist/esm/lib/mock_agent.d.ts +5 -0
  94. package/dist/esm/lib/mock_agent.js +45 -0
  95. package/dist/esm/lib/mock_custom_loader.d.ts +1 -0
  96. package/dist/esm/lib/mock_custom_loader.js +34 -0
  97. package/dist/esm/lib/mock_http_server.d.ts +2 -0
  98. package/dist/esm/lib/mock_http_server.js +18 -0
  99. package/dist/esm/lib/mock_httpclient.d.ts +35 -0
  100. package/dist/esm/lib/mock_httpclient.js +144 -0
  101. package/dist/esm/lib/parallel/agent.d.ts +20 -0
  102. package/dist/esm/lib/parallel/agent.js +117 -0
  103. package/dist/esm/lib/parallel/app.d.ts +20 -0
  104. package/dist/esm/lib/parallel/app.js +110 -0
  105. package/dist/esm/lib/parallel/util.d.ts +3 -0
  106. package/dist/esm/lib/parallel/util.js +73 -0
  107. package/dist/esm/lib/prerequire.d.ts +1 -0
  108. package/dist/esm/lib/prerequire.js +25 -0
  109. package/dist/esm/lib/request_call_function.d.ts +1 -0
  110. package/dist/esm/lib/request_call_function.js +47 -0
  111. package/dist/esm/lib/restore.d.ts +1 -0
  112. package/dist/esm/lib/restore.js +13 -0
  113. package/dist/esm/lib/start-cluster.d.ts +2 -0
  114. package/dist/esm/lib/start-cluster.js +18 -0
  115. package/dist/esm/lib/supertest.d.ts +11 -0
  116. package/dist/esm/lib/supertest.js +40 -0
  117. package/dist/esm/lib/tmp/empty.d.ts +1 -0
  118. package/dist/esm/lib/tmp/empty.js +2 -0
  119. package/dist/esm/lib/types.d.ts +60 -0
  120. package/dist/esm/lib/types.js +2 -0
  121. package/dist/esm/lib/utils.d.ts +9 -0
  122. package/dist/esm/lib/utils.js +69 -0
  123. package/dist/esm/package.json +3 -0
  124. package/dist/esm/register.d.ts +8 -0
  125. package/dist/esm/register.js +75 -0
  126. package/dist/package.json +4 -0
  127. package/package.json +131 -0
  128. package/src/app/extend/agent.ts +56 -0
  129. package/src/app/extend/application.ts +512 -0
  130. package/src/app/middleware/cluster_app_mock.ts +101 -0
  131. package/src/app.ts +18 -0
  132. package/src/bootstrap.ts +25 -0
  133. package/src/index.d.ts +193 -0
  134. package/src/index.test-d.ts +47 -0
  135. package/src/index.ts +110 -0
  136. package/src/lib/agent_handler.ts +28 -0
  137. package/src/lib/app.ts +313 -0
  138. package/src/lib/app_handler.ts +69 -0
  139. package/src/lib/cluster.ts +363 -0
  140. package/src/lib/context.ts +14 -0
  141. package/src/lib/format_options.ts +103 -0
  142. package/src/lib/inject_context.ts +134 -0
  143. package/src/lib/mock_agent.ts +57 -0
  144. package/src/lib/mock_custom_loader.ts +36 -0
  145. package/src/lib/mock_http_server.ts +19 -0
  146. package/src/lib/mock_httpclient.ts +181 -0
  147. package/src/lib/parallel/agent.ts +128 -0
  148. package/src/lib/parallel/app.ts +123 -0
  149. package/src/lib/parallel/util.ts +66 -0
  150. package/src/lib/prerequire.ts +25 -0
  151. package/src/lib/request_call_function.ts +49 -0
  152. package/src/lib/restore.ts +14 -0
  153. package/src/lib/start-cluster.ts +23 -0
  154. package/src/lib/supertest.ts +45 -0
  155. package/src/lib/tmp/.gitkeep +0 -0
  156. package/src/lib/tmp/empty.ts +0 -0
  157. package/src/lib/types.ts +72 -0
  158. package/src/lib/utils.ts +82 -0
  159. package/src/register.ts +80 -0
@@ -0,0 +1,47 @@
1
+ import httpClient from 'urllib';
2
+ const { port, method, args, property, needResult } = JSON.parse(process.argv[2]);
3
+ const url = `http://127.0.0.1:${port}/__egg_mock_call_function`;
4
+ httpClient.request(url, {
5
+ method: 'POST',
6
+ data: {
7
+ method,
8
+ args,
9
+ property,
10
+ needResult,
11
+ },
12
+ contentType: 'json',
13
+ dataType: 'json',
14
+ }).then(({ data }) => {
15
+ if (!data.success) {
16
+ // console.log('POST %s error, method: %s, args: %j, result data: %j',
17
+ // url, method, args, data);
18
+ if (data.error) {
19
+ console.error(data.error);
20
+ }
21
+ else if (data.message) {
22
+ const err = new Error(data.message);
23
+ err.stack = data.stack;
24
+ console.error(err);
25
+ }
26
+ process.exit(2);
27
+ }
28
+ if (data.result) {
29
+ console.log('%j', data.result);
30
+ }
31
+ process.exit(0);
32
+ }).catch(err => {
33
+ // ignore ECONNREFUSED error on mockRestore
34
+ if (method === 'mockRestore' && err.message.includes('ECONNREFUSED')) {
35
+ process.exit(0);
36
+ }
37
+ console.error('POST %s error, method: %s, args: %j', url, method, args);
38
+ console.error(err.stack);
39
+ // ignore all error on mockRestore
40
+ if (method === 'mockRestore') {
41
+ process.exit(0);
42
+ }
43
+ else {
44
+ process.exit(1);
45
+ }
46
+ });
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdF9jYWxsX2Z1bmN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9yZXF1ZXN0X2NhbGxfZnVuY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxVQUFVLE1BQU0sUUFBUSxDQUFDO0FBRWhDLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDakYsTUFBTSxHQUFHLEdBQUcsb0JBQW9CLElBQUksMkJBQTJCLENBQUM7QUFFaEUsVUFBVSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUU7SUFDdEIsTUFBTSxFQUFFLE1BQU07SUFDZCxJQUFJLEVBQUU7UUFDSixNQUFNO1FBQ04sSUFBSTtRQUNKLFFBQVE7UUFDUixVQUFVO0tBQ1g7SUFDRCxXQUFXLEVBQUUsTUFBTTtJQUNuQixRQUFRLEVBQUUsTUFBTTtDQUNqQixDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFO0lBQ25CLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDbEIsc0VBQXNFO1FBQ3RFLDhCQUE4QjtRQUM5QixJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNmLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVCLENBQUM7YUFBTSxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUN4QixNQUFNLEdBQUcsR0FBRyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDcEMsR0FBRyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1lBQ3ZCLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDckIsQ0FBQztRQUNELE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEIsQ0FBQztJQUVELElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2hCLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBQ0QsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsQixDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUU7SUFDYiwyQ0FBMkM7SUFDM0MsSUFBSSxNQUFNLEtBQUssYUFBYSxJQUFJLEdBQUcsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUM7UUFDckUsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsQixDQUFDO0lBRUQsT0FBTyxDQUFDLEtBQUssQ0FBQyxxQ0FBcUMsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3hFLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRXpCLGtDQUFrQztJQUNsQyxJQUFJLE1BQU0sS0FBSyxhQUFhLEVBQUUsQ0FBQztRQUM3QixPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xCLENBQUM7U0FBTSxDQUFDO1FBQ04sT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsQixDQUFDO0FBQ0gsQ0FBQyxDQUFDLENBQUMifQ==
@@ -0,0 +1 @@
1
+ export declare function restore(): Promise<void>;
@@ -0,0 +1,13 @@
1
+ import { debuglog } from 'node:util';
2
+ import { restore as mmRestore } from 'mm';
3
+ import { restoreMockAgent } from './mock_agent.js';
4
+ import { restore as clusterRestore } from './cluster.js';
5
+ const debug = debuglog('@eggjs/mock/lib/restore');
6
+ export async function restore() {
7
+ // keep mm.restore execute in the current event loop
8
+ mmRestore();
9
+ await clusterRestore();
10
+ await restoreMockAgent();
11
+ debug('restore all');
12
+ }
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdG9yZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvcmVzdG9yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxPQUFPLElBQUksU0FBUyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxPQUFPLElBQUksY0FBYyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRXpELE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0FBRWxELE1BQU0sQ0FBQyxLQUFLLFVBQVUsT0FBTztJQUMzQixvREFBb0Q7SUFDcEQsU0FBUyxFQUFFLENBQUM7SUFDWixNQUFNLGNBQWMsRUFBRSxDQUFDO0lBQ3ZCLE1BQU0sZ0JBQWdCLEVBQUUsQ0FBQztJQUN6QixLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7QUFDdkIsQ0FBQyJ9
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ export {};
@@ -0,0 +1,18 @@
1
+ #!/usr/bin/env node
2
+ import assert from 'node:assert';
3
+ import { debuglog } from 'node:util';
4
+ import { importModule } from '@eggjs/utils';
5
+ import { isAsyncFunction } from 'is-type-of';
6
+ const debug = debuglog('@eggjs/mock/lib/start-cluster');
7
+ // if (process.env.EGG_BIN_PREREQUIRE) {
8
+ // require('./prerequire');
9
+ // }
10
+ async function main() {
11
+ const options = JSON.parse(process.argv[2]);
12
+ debug('startCluster with options: %o', options);
13
+ const { startCluster } = await importModule(options.framework);
14
+ assert(isAsyncFunction(startCluster), `framework(${options.framework}) should export startCluster as an async function`);
15
+ await startCluster(options);
16
+ }
17
+ main();
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhcnQtY2x1c3Rlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvc3RhcnQtY2x1c3Rlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBRUEsT0FBTyxNQUFNLE1BQU0sYUFBYSxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDckMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUM1QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRTdDLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO0FBRXhELHdDQUF3QztBQUN4Qyw2QkFBNkI7QUFDN0IsSUFBSTtBQUVKLEtBQUssVUFBVSxJQUFJO0lBQ2pCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVDLEtBQUssQ0FBQywrQkFBK0IsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNoRCxNQUFNLEVBQUUsWUFBWSxFQUFFLEdBQUcsTUFBTSxZQUFZLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQy9ELE1BQU0sQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLEVBQ2xDLGFBQWEsT0FBTyxDQUFDLFNBQVMsbURBQW1ELENBQUMsQ0FBQztJQUNyRixNQUFNLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUM5QixDQUFDO0FBRUQsSUFBSSxFQUFFLENBQUMifQ==
@@ -0,0 +1,11 @@
1
+ import { Request, Test } from '@eggjs/supertest';
2
+ /**
3
+ * Test against the given `app`,
4
+ * returning a new `Test`.
5
+ */
6
+ export declare class EggTestRequest extends Request {
7
+ #private;
8
+ constructor(app: any);
9
+ protected _testRequest(method: string, url: string): Test;
10
+ }
11
+ export declare function request(app: any): EggTestRequest;
@@ -0,0 +1,40 @@
1
+ import path from 'node:path';
2
+ import { readJSONSync } from 'utility';
3
+ import { Request } from '@eggjs/supertest';
4
+ import { createServer } from './mock_http_server.js';
5
+ import { getSourceDirname } from './utils.js';
6
+ // patch from https://github.com/visionmedia/supertest/blob/199506d8dbfe0bb1434fc07c38cdcd1ab4c7c926/index.js#L19
7
+ let pkgVersion = '';
8
+ /**
9
+ * Test against the given `app`,
10
+ * returning a new `Test`.
11
+ */
12
+ export class EggTestRequest extends Request {
13
+ #app;
14
+ constructor(app) {
15
+ super(createServer(app));
16
+ this.#app = app;
17
+ }
18
+ _testRequest(method, url) {
19
+ // support pathFor(url)
20
+ if (url[0] !== '/') {
21
+ const realUrl = this.#app.router.pathFor(url);
22
+ if (!realUrl) {
23
+ throw new Error(`Can\'t find router:${url}, please check your \'app/router.js\'`);
24
+ }
25
+ url = realUrl;
26
+ }
27
+ const test = super._testRequest(method, url);
28
+ if (!pkgVersion) {
29
+ const pkgFile = path.join(getSourceDirname(), '../package.json');
30
+ const pkg = readJSONSync(pkgFile);
31
+ pkgVersion = pkg.version;
32
+ }
33
+ test.set('User-Agent', `@eggjs/mock/${pkgVersion} Node.js/${process.version}`);
34
+ return test;
35
+ }
36
+ }
37
+ export function request(app) {
38
+ return new EggTestRequest(app);
39
+ }
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VwZXJ0ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9zdXBlcnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxJQUFJLE1BQU0sV0FBVyxDQUFDO0FBQzdCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDdkMsT0FBTyxFQUFFLE9BQU8sRUFBUSxNQUFNLGtCQUFrQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFOUMsaUhBQWlIO0FBRWpILElBQUksVUFBVSxHQUFHLEVBQUUsQ0FBQztBQUVwQjs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sY0FBZSxTQUFRLE9BQU87SUFDekMsSUFBSSxDQUFNO0lBRVYsWUFBWSxHQUFRO1FBQ2xCLEtBQUssQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUN6QixJQUFJLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQztJQUNsQixDQUFDO0lBRVMsWUFBWSxDQUFDLE1BQWMsRUFBRSxHQUFXO1FBQ2hELHVCQUF1QjtRQUN2QixJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztZQUNuQixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDOUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUNiLE1BQU0sSUFBSSxLQUFLLENBQUMsc0JBQXNCLEdBQUcsdUNBQXVDLENBQUMsQ0FBQztZQUNwRixDQUFDO1lBQ0QsR0FBRyxHQUFHLE9BQU8sQ0FBQztRQUNoQixDQUFDO1FBQ0QsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDN0MsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2hCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1lBQ2pFLE1BQU0sR0FBRyxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNsQyxVQUFVLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQztRQUMzQixDQUFDO1FBQ0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsZUFBZSxVQUFVLFlBQVksT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDL0UsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0NBQ0Y7QUFFRCxNQUFNLFVBQVUsT0FBTyxDQUFDLEdBQVE7SUFDOUIsT0FBTyxJQUFJLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNqQyxDQUFDIn0=
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1wdHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3RtcC9lbXB0eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIn0=
@@ -0,0 +1,60 @@
1
+ export interface MockOptions {
2
+ /**
3
+ * The directory of the application
4
+ */
5
+ baseDir?: string;
6
+ /**
7
+ * Custom you plugins
8
+ */
9
+ plugins?: any;
10
+ /**
11
+ * The directory of the egg framework
12
+ *
13
+ * Set to `true` to use the current directory as framework directory
14
+ */
15
+ framework?: string | boolean;
16
+ /**
17
+ * current test on plugin
18
+ */
19
+ plugin?: boolean;
20
+ /**
21
+ * @deprecated please use framework instead
22
+ */
23
+ customEgg?: string | boolean;
24
+ /**
25
+ * Cache application based on baseDir
26
+ */
27
+ cache?: boolean;
28
+ /**
29
+ * Switch on process coverage, but it'll be slower
30
+ */
31
+ coverage?: boolean;
32
+ /**
33
+ * Remove $baseDir/logs and $baseDir/run before start, default is `true`
34
+ */
35
+ clean?: boolean;
36
+ /**
37
+ * default options.mockCtxStorage value on each mockContext
38
+ */
39
+ mockCtxStorage?: boolean;
40
+ beforeInit?: (app: any) => Promise<void>;
41
+ }
42
+ export interface MockClusterOptions extends MockOptions {
43
+ workers?: number | string;
44
+ cache?: boolean;
45
+ port?: number;
46
+ /**
47
+ * opt pass to coffee, such as { execArgv: ['--debug'] }
48
+ */
49
+ opt?: object;
50
+ }
51
+ export interface MockApplicationOptions extends MockOptions {
52
+ baseDir: string;
53
+ framework: string;
54
+ clusterPort?: number;
55
+ }
56
+ export interface MockClusterApplicationOptions extends MockClusterOptions {
57
+ baseDir: string;
58
+ framework: string;
59
+ port: number;
60
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIifQ==
@@ -0,0 +1,9 @@
1
+ export declare function getSourceDirname(): string;
2
+ export declare function sleep(delay: number): Promise<void>;
3
+ export declare function rimraf(filepath: string): Promise<void>;
4
+ export declare function rimrafSync(filepath: string): void;
5
+ export declare function getProperty(target: any, prop: PropertyKey): any;
6
+ export declare function getEggOptions(): {
7
+ baseDir: string;
8
+ framework: string | undefined;
9
+ };
@@ -0,0 +1,69 @@
1
+ import { rm } from 'node:fs/promises';
2
+ import { rmSync } from 'node:fs';
3
+ import path from 'node:path';
4
+ import { fileURLToPath } from 'node:url';
5
+ import { scheduler } from 'node:timers/promises';
6
+ export function getSourceDirname() {
7
+ if (typeof __dirname !== 'undefined') {
8
+ return path.dirname(__dirname);
9
+ }
10
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
11
+ // @ts-ignore
12
+ return path.dirname(path.dirname(fileURLToPath(import.meta.url)));
13
+ }
14
+ export async function sleep(delay) {
15
+ await scheduler.wait(delay);
16
+ }
17
+ export async function rimraf(filepath) {
18
+ await rm(filepath, { force: true, recursive: true });
19
+ }
20
+ export function rimrafSync(filepath) {
21
+ rmSync(filepath, { force: true, recursive: true });
22
+ }
23
+ export function getProperty(target, prop) {
24
+ const member = target[prop];
25
+ if (typeof member === 'function') {
26
+ return member.bind(target);
27
+ }
28
+ return member;
29
+ }
30
+ export function getEggOptions() {
31
+ const options = {
32
+ baseDir: process.env.EGG_BASE_DIR ?? process.cwd(),
33
+ framework: process.env.EGG_FRAMEWORK,
34
+ };
35
+ return options;
36
+ }
37
+ // const hasOwnProperty = Object.prototype.hasOwnProperty;
38
+ // /**
39
+ // * Merge the property descriptors of `src` into `dest`
40
+ // *
41
+ // * @param {object} dest Object to add descriptors to
42
+ // * @param {object} src Object to clone descriptors from
43
+ // * @param {boolean} [redefine=true] Redefine `dest` properties with `src` properties
44
+ // * @return {object} Reference to dest
45
+ // * @public
46
+ // */
47
+ // function merge(dest, src, redefine) {
48
+ // if (!dest) {
49
+ // throw new TypeError('argument dest is required');
50
+ // }
51
+ // if (!src) {
52
+ // throw new TypeError('argument src is required');
53
+ // }
54
+ // if (redefine === undefined) {
55
+ // // Default to true
56
+ // redefine = true;
57
+ // }
58
+ // Object.getOwnPropertyNames(src).forEach(function forEachOwnPropertyName(name) {
59
+ // if (!redefine && hasOwnProperty.call(dest, name)) {
60
+ // // Skip descriptor
61
+ // return;
62
+ // }
63
+ // // Copy descriptor
64
+ // const descriptor = Object.getOwnPropertyDescriptor(src, name);
65
+ // Object.defineProperty(dest, name, descriptor);
66
+ // });
67
+ // return dest;
68
+ // }
69
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN0QyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ2pDLE9BQU8sSUFBSSxNQUFNLFdBQVcsQ0FBQztBQUM3QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVqRCxNQUFNLFVBQVUsZ0JBQWdCO0lBQzlCLElBQUksT0FBTyxTQUFTLEtBQUssV0FBVyxFQUFFLENBQUM7UUFDckMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFDRCw2REFBNkQ7SUFDN0QsYUFBYTtJQUNiLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNwRSxDQUFDO0FBRUQsTUFBTSxDQUFDLEtBQUssVUFBVSxLQUFLLENBQUMsS0FBYTtJQUN2QyxNQUFNLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDOUIsQ0FBQztBQUVELE1BQU0sQ0FBQyxLQUFLLFVBQVUsTUFBTSxDQUFDLFFBQWdCO0lBQzNDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7QUFDdkQsQ0FBQztBQUVELE1BQU0sVUFBVSxVQUFVLENBQUMsUUFBZ0I7SUFDekMsTUFBTSxDQUFDLFFBQVEsRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7QUFDckQsQ0FBQztBQUVELE1BQU0sVUFBVSxXQUFXLENBQUMsTUFBVyxFQUFFLElBQWlCO0lBQ3hELE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM1QixJQUFJLE9BQU8sTUFBTSxLQUFLLFVBQVUsRUFBRSxDQUFDO1FBQ2pDLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBQ0QsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQztBQUVELE1BQU0sVUFBVSxhQUFhO0lBQzNCLE1BQU0sT0FBTyxHQUFHO1FBQ2QsT0FBTyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsWUFBWSxJQUFJLE9BQU8sQ0FBQyxHQUFHLEVBQUU7UUFDbEQsU0FBUyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsYUFBYTtLQUNyQyxDQUFDO0lBQ0YsT0FBTyxPQUFPLENBQUM7QUFDakIsQ0FBQztBQUVELDBEQUEwRDtBQUUxRCxNQUFNO0FBQ04seURBQXlEO0FBQ3pELEtBQUs7QUFDTCx1REFBdUQ7QUFDdkQsMERBQTBEO0FBQzFELHVGQUF1RjtBQUN2Rix3Q0FBd0M7QUFDeEMsYUFBYTtBQUNiLE1BQU07QUFFTix3Q0FBd0M7QUFDeEMsaUJBQWlCO0FBQ2pCLHdEQUF3RDtBQUN4RCxNQUFNO0FBRU4sZ0JBQWdCO0FBQ2hCLHVEQUF1RDtBQUN2RCxNQUFNO0FBRU4sa0NBQWtDO0FBQ2xDLHlCQUF5QjtBQUN6Qix1QkFBdUI7QUFDdkIsTUFBTTtBQUVOLG9GQUFvRjtBQUNwRiwwREFBMEQ7QUFDMUQsMkJBQTJCO0FBQzNCLGdCQUFnQjtBQUNoQixRQUFRO0FBRVIseUJBQXlCO0FBQ3pCLHFFQUFxRTtBQUNyRSxxREFBcUQ7QUFDckQsUUFBUTtBQUVSLGlCQUFpQjtBQUNqQixJQUFJIn0=
@@ -0,0 +1,3 @@
1
+ {
2
+ "type": "module"
3
+ }
@@ -0,0 +1,8 @@
1
+ export declare function mochaGlobalSetup(): Promise<void>;
2
+ export declare function mochaGlobalTeardown(): Promise<void>;
3
+ export declare const mochaHooks: {
4
+ beforeAll(): Promise<void>;
5
+ afterEach(): Promise<void>;
6
+ afterAll(): Promise<void>;
7
+ };
8
+ import 'mocha';
@@ -0,0 +1,75 @@
1
+ import { debuglog } from 'node:util';
2
+ import { createRequire } from 'node:module';
3
+ import { mock } from './index.js';
4
+ import { setupAgent, closeAgent } from './lib/agent_handler.js';
5
+ import { getApp } from './lib/app_handler.js';
6
+ import { injectContext } from './lib/inject_context.js';
7
+ const debug = debuglog('@eggjs/mock/register');
8
+ export async function mochaGlobalSetup() {
9
+ debug('mochaGlobalSetup, agent.setupAgent() start');
10
+ await setupAgent();
11
+ debug('mochaGlobalSetup, agent.setupAgent() end');
12
+ }
13
+ export async function mochaGlobalTeardown() {
14
+ debug('mochaGlobalTeardown, agent.closeAgent() start');
15
+ await closeAgent();
16
+ debug('mochaGlobalTeardown, agent.closeAgent() end');
17
+ }
18
+ export const mochaHooks = {
19
+ async beforeAll() {
20
+ const app = await getApp();
21
+ debug('mochaHooks.beforeAll call, _app: %s', app);
22
+ if (app) {
23
+ await app.ready();
24
+ }
25
+ },
26
+ async afterEach() {
27
+ const app = await getApp();
28
+ debug('mochaHooks.afterEach call, _app: %s', app);
29
+ if (app) {
30
+ await app.backgroundTasksFinished();
31
+ }
32
+ await mock.restore();
33
+ },
34
+ async afterAll() {
35
+ // skip auto app close on parallel
36
+ if (process.env.ENABLE_MOCHA_PARALLEL)
37
+ return;
38
+ const app = await getApp();
39
+ debug('mochaHooks.afterAll call, _app: %s', app);
40
+ if (app) {
41
+ await app.close();
42
+ }
43
+ },
44
+ };
45
+ /**
46
+ * Find active node mocha instances.
47
+ */
48
+ function findNodeJSMocha() {
49
+ let children;
50
+ if (typeof require === 'function') {
51
+ children = require.cache || {};
52
+ }
53
+ else {
54
+ // FIXME: not work on ESM
55
+ children = createRequire(process.cwd()).cache || {};
56
+ debug('createRequire on esm');
57
+ }
58
+ return Object.keys(children)
59
+ .filter(function (child) {
60
+ const val = children[child].exports;
61
+ return typeof val === 'function' && val.name === 'Mocha';
62
+ })
63
+ .map(function (child) {
64
+ return children[child].exports;
65
+ });
66
+ }
67
+ import 'mocha';
68
+ const modules = findNodeJSMocha();
69
+ // console.error('modules length: %s', modules.length);
70
+ for (const module of modules) {
71
+ if (!module)
72
+ continue;
73
+ injectContext(module);
74
+ }
75
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcmVnaXN0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNyQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDbEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDOUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRXhELE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0FBRS9DLE1BQU0sQ0FBQyxLQUFLLFVBQVUsZ0JBQWdCO0lBQ3BDLEtBQUssQ0FBQyw0Q0FBNEMsQ0FBQyxDQUFDO0lBQ3BELE1BQU0sVUFBVSxFQUFFLENBQUM7SUFDbkIsS0FBSyxDQUFDLDBDQUEwQyxDQUFDLENBQUM7QUFDcEQsQ0FBQztBQUVELE1BQU0sQ0FBQyxLQUFLLFVBQVUsbUJBQW1CO0lBQ3ZDLEtBQUssQ0FBQywrQ0FBK0MsQ0FBQyxDQUFDO0lBQ3ZELE1BQU0sVUFBVSxFQUFFLENBQUM7SUFDbkIsS0FBSyxDQUFDLDZDQUE2QyxDQUFDLENBQUM7QUFDdkQsQ0FBQztBQUVELE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRztJQUN4QixLQUFLLENBQUMsU0FBUztRQUNiLE1BQU0sR0FBRyxHQUFHLE1BQU0sTUFBTSxFQUFFLENBQUM7UUFDM0IsS0FBSyxDQUFDLHFDQUFxQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ2xELElBQUksR0FBRyxFQUFFLENBQUM7WUFDUixNQUFNLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNwQixDQUFDO0lBQ0gsQ0FBQztJQUNELEtBQUssQ0FBQyxTQUFTO1FBQ2IsTUFBTSxHQUFHLEdBQUcsTUFBTSxNQUFNLEVBQUUsQ0FBQztRQUMzQixLQUFLLENBQUMscUNBQXFDLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDbEQsSUFBSSxHQUFHLEVBQUUsQ0FBQztZQUNSLE1BQU0sR0FBRyxDQUFDLHVCQUF1QixFQUFFLENBQUM7UUFDdEMsQ0FBQztRQUNELE1BQU0sSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFDRCxLQUFLLENBQUMsUUFBUTtRQUNaLGtDQUFrQztRQUNsQyxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMscUJBQXFCO1lBQUUsT0FBTztRQUM5QyxNQUFNLEdBQUcsR0FBRyxNQUFNLE1BQU0sRUFBRSxDQUFDO1FBQzNCLEtBQUssQ0FBQyxvQ0FBb0MsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNqRCxJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQ1IsTUFBTSxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDcEIsQ0FBQztJQUNILENBQUM7Q0FDRixDQUFDO0FBRUY7O0dBRUc7QUFDSCxTQUFTLGVBQWU7SUFDdEIsSUFBSSxRQUFhLENBQUM7SUFDbEIsSUFBSSxPQUFPLE9BQU8sS0FBSyxVQUFVLEVBQUUsQ0FBQztRQUNsQyxRQUFRLEdBQUcsT0FBTyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7SUFDakMsQ0FBQztTQUFNLENBQUM7UUFDTix5QkFBeUI7UUFDekIsUUFBUSxHQUFHLGFBQWEsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO1FBQ3BELEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1NBQ3pCLE1BQU0sQ0FBQyxVQUFTLEtBQUs7UUFDcEIsTUFBTSxHQUFHLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQztRQUNwQyxPQUFPLE9BQU8sR0FBRyxLQUFLLFVBQVUsSUFBSSxHQUFHLENBQUMsSUFBSSxLQUFLLE9BQU8sQ0FBQztJQUMzRCxDQUFDLENBQUM7U0FDRCxHQUFHLENBQUMsVUFBUyxLQUFLO1FBQ2pCLE9BQU8sUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQztJQUNqQyxDQUFDLENBQUMsQ0FBQztBQUNQLENBQUM7QUFFRCxPQUFPLE9BQU8sQ0FBQztBQUVmLE1BQU0sT0FBTyxHQUFHLGVBQWUsRUFBRSxDQUFDO0FBQ2xDLHVEQUF1RDtBQUV2RCxLQUFLLE1BQU0sTUFBTSxJQUFJLE9BQU8sRUFBRSxDQUFDO0lBQzdCLElBQUksQ0FBQyxNQUFNO1FBQUUsU0FBUztJQUN0QixhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDeEIsQ0FBQyJ9
@@ -0,0 +1,4 @@
1
+ {
2
+ "name": "@eggjs/mock",
3
+ "version": "6.0.0-beta.3"
4
+ }
package/package.json ADDED
@@ -0,0 +1,131 @@
1
+ {
2
+ "name": "@eggjs/mock",
3
+ "version": "6.0.0-beta.3",
4
+ "publishConfig": {
5
+ "access": "public"
6
+ },
7
+ "eggPlugin": {
8
+ "name": "egg-mock",
9
+ "exports": {
10
+ "import": "./dist/esm",
11
+ "require": "./dist/commonjs"
12
+ }
13
+ },
14
+ "description": "mock server plugin for egg",
15
+ "homepage": "https://github.com/eggjs/mock",
16
+ "repository": {
17
+ "type": "git",
18
+ "url": "git+https://github.com/eggjs/mock.git"
19
+ },
20
+ "bugs": {
21
+ "url": "https://github.com/eggjs/egg/issues"
22
+ },
23
+ "keywords": [
24
+ "egg",
25
+ "mock"
26
+ ],
27
+ "author": "popomore <sakura9515@gmail.com>",
28
+ "engines": {
29
+ "node": ">= 18.19.0"
30
+ },
31
+ "dependencies": {
32
+ "@eggjs/core": "^6.2.4",
33
+ "@eggjs/supertest": "^8.1.0",
34
+ "@eggjs/utils": "^4.0.3",
35
+ "coffee": "^5.2.1",
36
+ "detect-port": "^2.1.0",
37
+ "egg-logger": "^3.5.0",
38
+ "extend2": "^4.0.0",
39
+ "get-ready": "^3.4.0",
40
+ "globby": "^11.1.0",
41
+ "is-type-of": "^2.2.0",
42
+ "merge-descriptors": "^2.0.0",
43
+ "mm": "^4.0.1",
44
+ "sdk-base": "^5.0.0",
45
+ "utility": "^2.3.0"
46
+ },
47
+ "peerDependencies": {
48
+ "mocha": "^10.2.0"
49
+ },
50
+ "devDependencies": {
51
+ "@arethetypeswrong/cli": "^0.17.1",
52
+ "@eggjs/tegg": "^3.2.2",
53
+ "@eggjs/tegg-config": "^3.2.2",
54
+ "@eggjs/tegg-controller-plugin": "^3.2.2",
55
+ "@eggjs/tegg-plugin": "^3.2.2",
56
+ "@eggjs/tsconfig": "1",
57
+ "@types/methods": "^1.1.4",
58
+ "@types/mocha": "10",
59
+ "@types/node": "22",
60
+ "egg": "beta",
61
+ "egg-bin": "beta",
62
+ "egg-errors": "^2.2.1",
63
+ "egg-tracer": "^2.0.0",
64
+ "eslint": "8",
65
+ "eslint-config-egg": "14",
66
+ "mocha": "10",
67
+ "pedding": "^2.0.0",
68
+ "tshy": "3",
69
+ "tshy-after": "^1.3.1",
70
+ "typescript": "5",
71
+ "urllib": "4"
72
+ },
73
+ "scripts": {
74
+ "lint": "eslint --cache src test --ext .ts",
75
+ "pretest": "npm run lint -- --fix && npm run prepublishOnly",
76
+ "test": "egg-bin test",
77
+ "test-local": "egg-bin test",
78
+ "preci": "npm run lint && npm run prepublishOnly && attw --pack --profile node16",
79
+ "ci": "egg-bin cov -p",
80
+ "prepublishOnly": "tshy && tshy-after"
81
+ },
82
+ "type": "module",
83
+ "tshy": {
84
+ "exports": {
85
+ ".": "./src/index.ts",
86
+ "./bootstrap": "./src/bootstrap.ts",
87
+ "./register": "./src/register.ts",
88
+ "./package.json": "./package.json"
89
+ }
90
+ },
91
+ "exports": {
92
+ ".": {
93
+ "import": {
94
+ "types": "./dist/esm/index.d.ts",
95
+ "default": "./dist/esm/index.js"
96
+ },
97
+ "require": {
98
+ "types": "./dist/commonjs/index.d.ts",
99
+ "default": "./dist/commonjs/index.js"
100
+ }
101
+ },
102
+ "./bootstrap": {
103
+ "import": {
104
+ "types": "./dist/esm/bootstrap.d.ts",
105
+ "default": "./dist/esm/bootstrap.js"
106
+ },
107
+ "require": {
108
+ "types": "./dist/commonjs/bootstrap.d.ts",
109
+ "default": "./dist/commonjs/bootstrap.js"
110
+ }
111
+ },
112
+ "./register": {
113
+ "import": {
114
+ "types": "./dist/esm/register.d.ts",
115
+ "default": "./dist/esm/register.js"
116
+ },
117
+ "require": {
118
+ "types": "./dist/commonjs/register.d.ts",
119
+ "default": "./dist/commonjs/register.js"
120
+ }
121
+ },
122
+ "./package.json": "./package.json"
123
+ },
124
+ "files": [
125
+ "dist",
126
+ "src"
127
+ ],
128
+ "types": "./dist/commonjs/index.d.ts",
129
+ "main": "./dist/commonjs/index.js",
130
+ "module": "./dist/esm/index.js"
131
+ }
@@ -0,0 +1,56 @@
1
+ import { mock, restore } from 'mm';
2
+ import { EggCore } from '@eggjs/core';
3
+ import {
4
+ createMockHttpClient, MockResultFunction,
5
+ MockResultOptions,
6
+ MockHttpClientMethod,
7
+ } from '../../lib/mock_httpclient.js';
8
+ import { getMockAgent, restoreMockAgent } from '../../lib/mock_agent.js';
9
+
10
+ export default abstract class AgentUnittest extends EggCore {
11
+ _mockHttpClient: MockHttpClientMethod;
12
+
13
+ /**
14
+ * mock httpclient
15
+ * @alias mockHttpClient
16
+ * @function App#mockHttpclient
17
+ */
18
+ mockHttpclient(mockUrl: string | RegExp, mockMethod: string | string[] | MockResultOptions | MockResultFunction, mockResult?: MockResultOptions | MockResultFunction | string) {
19
+ return this.mockHttpClient(mockUrl, mockMethod, mockResult);
20
+ }
21
+
22
+ /**
23
+ * mock httpclient
24
+ * @function App#mockHttpClient
25
+ */
26
+ mockHttpClient(mockUrl: string | RegExp, mockMethod: string | string[] | MockResultOptions | MockResultFunction, mockResult?: MockResultOptions | MockResultFunction | string) {
27
+ if (!this._mockHttpClient) {
28
+ this._mockHttpClient = createMockHttpClient(this);
29
+ }
30
+ return this._mockHttpClient(mockUrl, mockMethod, mockResult);
31
+ }
32
+
33
+ /**
34
+ * get mock httpclient agent
35
+ * @function Agent#mockHttpclientAgent
36
+ */
37
+ mockAgent() {
38
+ return getMockAgent(this as any);
39
+ }
40
+
41
+ async mockAgentRestore() {
42
+ await restoreMockAgent();
43
+ }
44
+
45
+ /**
46
+ * @see mm#restore
47
+ * @function Agent#mockRestore
48
+ */
49
+ mockRestore = restore;
50
+
51
+ /**
52
+ * @see mm
53
+ * @function Agent#mm
54
+ */
55
+ mm = mock;
56
+ }