@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,98 @@
1
+ import { debuglog } from 'node:util';
2
+ const debug = debuglog('@eggjs/mock/app/middleware/cluster_app_mock');
3
+ export default () => {
4
+ return async function clusterAppMock(ctx, next) {
5
+ // use originalUrl to make sure other middlewares can't change request url
6
+ if (ctx.originalUrl !== '/__egg_mock_call_function') {
7
+ return next();
8
+ }
9
+ debug('%s %s, body: %j', ctx.method, ctx.url, ctx.request.body);
10
+ const { method, property, args, needResult } = ctx.request.body;
11
+ if (!method) {
12
+ ctx.status = 422;
13
+ ctx.body = {
14
+ success: false,
15
+ error: 'Missing method',
16
+ };
17
+ return;
18
+ }
19
+ if (args && !Array.isArray(args)) {
20
+ ctx.status = 422;
21
+ ctx.body = {
22
+ success: false,
23
+ error: 'args should be an Array instance',
24
+ };
25
+ return;
26
+ }
27
+ if (property) {
28
+ // method: '__getter__' and property: 'config'
29
+ if (method === '__getter__') {
30
+ if (!ctx.app[property]) {
31
+ debug('property %s not exists on app', property);
32
+ ctx.status = 422;
33
+ ctx.body = {
34
+ success: false,
35
+ error: `property "${property}" not exists on app`,
36
+ };
37
+ return;
38
+ }
39
+ ctx.body = { success: true, result: ctx.app[property] };
40
+ return;
41
+ }
42
+ if (!ctx.app[property] || typeof ctx.app[property][method] !== 'function') {
43
+ debug('property %s.%s not exists on app', property, method);
44
+ ctx.status = 422;
45
+ ctx.body = {
46
+ success: false,
47
+ error: `method "${method}" not exists on app.${property}`,
48
+ };
49
+ return;
50
+ }
51
+ }
52
+ else {
53
+ if (typeof ctx.app[method] !== 'function') {
54
+ debug('method %s not exists on app', method);
55
+ ctx.status = 422;
56
+ ctx.body = {
57
+ success: false,
58
+ error: `method "${method}" not exists on app`,
59
+ };
60
+ return;
61
+ }
62
+ }
63
+ debug('call %s with %j', method, args);
64
+ for (let i = 0; i < args.length; i++) {
65
+ const arg = args[i];
66
+ if (arg && typeof arg === 'object') {
67
+ // convert __egg_mock_type back to function
68
+ if (arg.__egg_mock_type === 'function') {
69
+ // eslint-disable-next-line
70
+ args[i] = eval(`(function() { return ${arg.value} })()`);
71
+ }
72
+ else if (arg.__egg_mock_type === 'error') {
73
+ const err = new Error(arg.message);
74
+ err.name = arg.name;
75
+ err.stack = arg.stack;
76
+ for (const key in arg) {
77
+ if (key !== 'name' && key !== 'message' && key !== 'stack' && key !== '__egg_mock_type') {
78
+ err[key] = arg[key];
79
+ }
80
+ }
81
+ args[i] = err;
82
+ }
83
+ }
84
+ }
85
+ const target = property ? ctx.app[property] : ctx.app;
86
+ const fn = target[method];
87
+ try {
88
+ Promise.resolve(fn.call(target, ...args)).then(result => {
89
+ ctx.body = needResult ? { success: true, result } : { success: true };
90
+ });
91
+ }
92
+ catch (err) {
93
+ ctx.status = 500;
94
+ ctx.body = { success: false, error: err.message };
95
+ }
96
+ };
97
+ };
98
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2x1c3Rlcl9hcHBfbW9jay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcHAvbWlkZGxld2FyZS9jbHVzdGVyX2FwcF9tb2NrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFHckMsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLDZDQUE2QyxDQUFDLENBQUM7QUFFdEUsZUFBZSxHQUFHLEVBQUU7SUFDbEIsT0FBTyxLQUFLLFVBQVUsY0FBYyxDQUFDLEdBQXNCLEVBQUUsSUFBVTtRQUNyRSwwRUFBMEU7UUFDMUUsSUFBSSxHQUFHLENBQUMsV0FBVyxLQUFLLDJCQUEyQixFQUFFLENBQUM7WUFDcEQsT0FBTyxJQUFJLEVBQUUsQ0FBQztRQUNoQixDQUFDO1FBQ0QsS0FBSyxDQUFDLGlCQUFpQixFQUFFLEdBQUcsQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hFLE1BQU0sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztRQUNoRSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDWixHQUFHLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQztZQUNqQixHQUFHLENBQUMsSUFBSSxHQUFHO2dCQUNULE9BQU8sRUFBRSxLQUFLO2dCQUNkLEtBQUssRUFBRSxnQkFBZ0I7YUFDeEIsQ0FBQztZQUNGLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDakMsR0FBRyxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUM7WUFDakIsR0FBRyxDQUFDLElBQUksR0FBRztnQkFDVCxPQUFPLEVB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
@@ -0,0 +1,6 @@
1
+ import { ILifecycleBoot, EggCore } from '@eggjs/core';
2
+ export default class Boot implements ILifecycleBoot {
3
+ #private;
4
+ constructor(app: EggCore);
5
+ configWillLoad(): void;
6
+ }
@@ -0,0 +1,17 @@
1
+ export default class Boot {
2
+ #app;
3
+ constructor(app) {
4
+ this.#app = app;
5
+ }
6
+ configWillLoad() {
7
+ // make sure clusterAppMock position before securities
8
+ const index = this.#app.config.coreMiddleware.indexOf('securities');
9
+ if (index >= 0) {
10
+ this.#app.config.coreMiddleware.splice(index, 0, 'clusterAppMock');
11
+ }
12
+ else {
13
+ this.#app.config.coreMiddleware.push('clusterAppMock');
14
+ }
15
+ }
16
+ }
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FwcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLENBQUMsT0FBTyxPQUFPLElBQUk7SUFDdkIsSUFBSSxDQUFVO0lBQ2QsWUFBWSxHQUFZO1FBQ3RCLElBQUksQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDO0lBQ2xCLENBQUM7SUFFRCxjQUFjO1FBQ1osc0RBQXNEO1FBQ3RELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDcEUsSUFBSSxLQUFLLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDZixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztRQUNyRSxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUN6RCxDQUFDO0lBQ0gsQ0FBQztDQUNGIn0=
@@ -0,0 +1,4 @@
1
+ import { strict as assert } from 'node:assert';
2
+ import mm, { mock } from './index.js';
3
+ declare const app: import("./index.js").MockApplication;
4
+ export { assert, app, mm, mock, };
@@ -0,0 +1,16 @@
1
+ import { strict as assert } from 'node:assert';
2
+ import path from 'node:path';
3
+ import { readJSONSync } from 'utility';
4
+ import mm, { mock } from './index.js';
5
+ import { getBootstrapApp, setupApp } from './lib/app_handler.js';
6
+ import { getEggOptions } from './lib/utils.js';
7
+ const options = getEggOptions();
8
+ // throw error when an egg plugin test is using bootstrap
9
+ const pkgInfo = readJSONSync(path.join(options.baseDir || process.cwd(), 'package.json'));
10
+ if (pkgInfo.eggPlugin) {
11
+ throw new Error('DO NOT USE bootstrap to test plugin');
12
+ }
13
+ setupApp();
14
+ const app = getBootstrapApp();
15
+ export { assert, app, mm, mock, };
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9vdHN0cmFwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Jvb3RzdHJhcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxJQUFJLE1BQU0sRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMvQyxPQUFPLElBQUksTUFBTSxXQUFXLENBQUM7QUFDN0IsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUN2QyxPQUFPLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxNQUFNLFlBQVksQ0FBQztBQUN0QyxPQUFPLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUvQyxNQUFNLE9BQU8sR0FBRyxhQUFhLEVBQUUsQ0FBQztBQUVoQyx5REFBeUQ7QUFDekQsTUFBTSxPQUFPLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sSUFBSSxPQUFPLENBQUMsR0FBRyxFQUFFLEVBQUUsY0FBYyxDQUFDLENBQUMsQ0FBQztBQUMxRixJQUFJLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUN0QixNQUFNLElBQUksS0FBSyxDQUFDLHFDQUFxQyxDQUFDLENBQUM7QUFDekQsQ0FBQztBQUVELFFBQVEsRUFBRSxDQUFDO0FBRVgsTUFBTSxHQUFHLEdBQUcsZUFBZSxFQUFFLENBQUM7QUFFOUIsT0FBTyxFQUNMLE1BQU0sRUFDTixHQUFHLEVBQ0gsRUFBRSxFQUNGLElBQUksR0FDTCxDQUFDIn0=
@@ -0,0 +1,76 @@
1
+ import { mock as _mock } from 'mm';
2
+ import { createCluster } from './lib/cluster.js';
3
+ import { createApp } from './lib/app.js';
4
+ import { restore } from './lib/restore.js';
5
+ import { setGetAppCallback } from './lib/app_handler.js';
6
+ import ApplicationUnittest from './app/extend/application.js';
7
+ declare const mock: {
8
+ restore: typeof restore;
9
+ /**
10
+ * Create a egg mocked application
11
+ * @function mm#app
12
+ * @param {Object} [options]
13
+ * - {String} baseDir - The directory of the application
14
+ * - {Object} plugins - Custom you plugins
15
+ * - {String} framework - The directory of the egg framework
16
+ * - {Boolean} [true] cache - Cache application based on baseDir
17
+ * - {Boolean} [true] coverage - Switch on process coverage, but it'll be slower
18
+ * - {Boolean} [true] clean - Remove $baseDir/logs
19
+ * @return {App} return {@link Application}
20
+ * @example
21
+ * ```js
22
+ * const app = mm.app();
23
+ * ```
24
+ */
25
+ app: typeof createApp;
26
+ /**
27
+ * Create a egg mocked cluster application
28
+ * @function mm#cluster
29
+ * @see ClusterApplication
30
+ */
31
+ cluster: typeof createCluster;
32
+ /**
33
+ * mock the serverEnv of Egg
34
+ * @member {Function} mm#env
35
+ * @param {String} env - contain default, test, prod, local, unittest
36
+ * @see https://github.com/eggjs/egg-core/blob/master/lib/loader/egg_loader.js#L78
37
+ */
38
+ env(env: string): void;
39
+ /**
40
+ * mock console level
41
+ * @param {String} level - logger level
42
+ */
43
+ consoleLevel(level: string): void;
44
+ home(homePath?: string): void;
45
+ setGetAppCallback: typeof setGetAppCallback;
46
+ isMocked: typeof import("mm").isMocked;
47
+ mock: typeof _mock;
48
+ mm: typeof _mock;
49
+ datas: typeof import("mm").datas;
50
+ mockDatas: typeof import("mm").datas;
51
+ data: typeof import("mm").data;
52
+ mockData: typeof import("mm").data;
53
+ dataWithAsyncDispose: typeof import("mm").dataWithAsyncDispose;
54
+ empty: typeof import("mm").empty;
55
+ mockEmpty: typeof import("mm").empty;
56
+ error: typeof import("mm").error;
57
+ mockError: typeof import("mm").error;
58
+ spy: typeof import("mm").spy;
59
+ errorOnce: typeof import("mm").errorOnce;
60
+ syncError: typeof import("mm").syncError;
61
+ syncEmpty: typeof import("mm").syncEmpty;
62
+ syncData: typeof import("mm").syncData;
63
+ http: {
64
+ request: (url: import("mm").RequestURL, data: import("mm").ResponseData, headers?: Record<string, any>, delay?: number) => void;
65
+ requestError: (url: import("mm").RequestURL, reqError?: import("mm").MockError, resError?: import("mm").MockError, delay?: number) => void;
66
+ };
67
+ https: {
68
+ request: (url: import("mm").RequestURL, data: import("mm").ResponseData, headers?: Record<string, any>, delay?: number) => void;
69
+ requestError: (url: import("mm").RequestURL, reqError?: import("mm").MockError, resError?: import("mm").MockError, delay?: number) => void;
70
+ };
71
+ spawn: typeof import("mm").spawn;
72
+ classMethod: typeof import("mm").classMethod;
73
+ };
74
+ declare const proxyMock: ((target: any, property: PropertyKey, value?: any) => void) & typeof mock;
75
+ export default proxyMock;
76
+ export { proxyMock as mock, proxyMock as mm, ApplicationUnittest as MockApplication, setGetAppCallback, createApp, createCluster, };
@@ -0,0 +1,90 @@
1
+ import mm from 'mm';
2
+ import { mock as _mock } from 'mm';
3
+ import { createCluster } from './lib/cluster.js';
4
+ import { createApp } from './lib/app.js';
5
+ // import { getMockAgent } from './lib/mock_agent.js';
6
+ import { restore } from './lib/restore.js';
7
+ import { setGetAppCallback } from './lib/app_handler.js';
8
+ import ApplicationUnittest from './app/extend/application.js';
9
+ // egg-bin will set this flag to require files for instrument
10
+ // if (process.env.EGG_BIN_PREREQUIRE) {
11
+ // require('./lib/prerequire');
12
+ // }
13
+ // inherit & extends mm
14
+ const mock = {
15
+ ...mm,
16
+ restore,
17
+ /**
18
+ * Create a egg mocked application
19
+ * @function mm#app
20
+ * @param {Object} [options]
21
+ * - {String} baseDir - The directory of the application
22
+ * - {Object} plugins - Custom you plugins
23
+ * - {String} framework - The directory of the egg framework
24
+ * - {Boolean} [true] cache - Cache application based on baseDir
25
+ * - {Boolean} [true] coverage - Switch on process coverage, but it'll be slower
26
+ * - {Boolean} [true] clean - Remove $baseDir/logs
27
+ * @return {App} return {@link Application}
28
+ * @example
29
+ * ```js
30
+ * const app = mm.app();
31
+ * ```
32
+ */
33
+ app: createApp,
34
+ /**
35
+ * Create a egg mocked cluster application
36
+ * @function mm#cluster
37
+ * @see ClusterApplication
38
+ */
39
+ cluster: createCluster,
40
+ /**
41
+ * mock the serverEnv of Egg
42
+ * @member {Function} mm#env
43
+ * @param {String} env - contain default, test, prod, local, unittest
44
+ * @see https://github.com/eggjs/egg-core/blob/master/lib/loader/egg_loader.js#L78
45
+ */
46
+ env(env) {
47
+ _mock(process.env, 'EGG_MOCK_SERVER_ENV', env);
48
+ _mock(process.env, 'EGG_SERVER_ENV', env);
49
+ },
50
+ /**
51
+ * mock console level
52
+ * @param {String} level - logger level
53
+ */
54
+ consoleLevel(level) {
55
+ level = (level || '').toUpperCase();
56
+ _mock(process.env, 'EGG_LOG', level);
57
+ },
58
+ home(homePath) {
59
+ if (homePath) {
60
+ _mock(process.env, 'EGG_HOME', homePath);
61
+ }
62
+ },
63
+ setGetAppCallback,
64
+ };
65
+ // import mm from '@eggjs/mock';
66
+ const proxyMock = new Proxy(_mock, {
67
+ apply(target, _, args) {
68
+ return target(args[0], args[1], args[2]);
69
+ },
70
+ get(_target, property, receiver) {
71
+ // import mm from '@eggjs/mock';
72
+ // mm.isMocked(foo, 'bar')
73
+ return Reflect.get(mock, property, receiver);
74
+ },
75
+ });
76
+ export default proxyMock;
77
+ export { proxyMock as mock,
78
+ // alias to mm
79
+ proxyMock as mm, ApplicationUnittest as MockApplication, setGetAppCallback, createApp, createCluster, };
80
+ process.setMaxListeners(100);
81
+ process.once('SIGQUIT', () => {
82
+ process.exit(0);
83
+ });
84
+ process.once('SIGTERM', () => {
85
+ process.exit(0);
86
+ });
87
+ process.once('SIGINT', () => {
88
+ process.exit(0);
89
+ });
90
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ3BCLE9BQU8sRUFBRSxJQUFJLElBQUksS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ25DLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3pDLHNEQUFzRDtBQUN0RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDM0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxtQkFBbUIsTUFBTSw2QkFBNkIsQ0FBQztBQUU5RCw2REFBNkQ7QUFDN0Qsd0NBQXdDO0FBQ3hDLGlDQUFpQztBQUNqQyxJQUFJO0FBRUosdUJBQXVCO0FBQ3ZCLE1BQU0sSUFBSSxHQUFHO0lBQ1gsR0FBRyxFQUFFO0lBQ0wsT0FBTztJQUVQOzs7Ozs7Ozs7Ozs7Ozs7T0FlRztJQUNILEdBQUcsRUFBRSxTQUFTO0lBRWQ7Ozs7T0FJRztJQUNILE9BQU8sRUFBRSxhQUFhO0lBRXRCOzs7OztPQUtHO0lBQ0gsR0FBRyxDQUFDLEdBQVc7UUFDYixLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxxQkFBcUIsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUMvQyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxnQkFBZ0IsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsWUFBWSxDQUFDLEtBQWE7UUFDeEIsS0FBSyxHQUFHLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3BDLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQsSUFBSSxDQUFDLFFBQWlCO1FBQ3BCLElBQUksUUFBUSxFQUFFLENBQUM7WUFDYixLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDM0MsQ0FBQztJQUNILENBQUM7SUFFRCxpQkFBaUI7Q0FDbEIsQ0FBQztBQUVGLGdDQUFnQztBQUNoQyxNQUFNLFNBQVMsR0FBRyxJQUFJLEtBQUssQ0FBQyxLQUFLLEVBQUU7SUFDakMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsSUFBSTtRQUNuQixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFDRCxHQUFHLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRO1FBQzdCLGdDQUFnQztRQUNoQywwQkFBMEI7UUFDMUIsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDL0MsQ0FBQztDQUNGLENBQXlGLENBQUM7QUFFM0YsZUFBZSxTQUFTLENBQUM7QUFFekIsT0FBTyxFQUNMLFNBQVMsSUFBSSxJQUFJO0FBQ2pCLGNBQWM7QUFDZCxTQUFTLElBQUksRUFBRSxFQUNmLG1CQUFtQixJQUFJLGVBQWUsRUFDdEMsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxhQUFhLEdBQ2QsQ0FBQztBQUVGLE9BQU8sQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUM7QUFFN0IsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsR0FBRyxFQUFFO0lBQzNCLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbEIsQ0FBQyxDQUFDLENBQUM7QUFFSCxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxHQUFHLEVBQUU7SUFDM0IsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsQixDQUFDLENBQUMsQ0FBQztBQUVILE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEdBQUcsRUFBRTtJQUMxQixPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2xCLENBQUMsQ0FBQyxDQUFDIn0=
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,42 @@
1
+ // import { expectType } from 'tsd';
2
+ // import { Application, Context } from 'egg';
3
+ // import { MockApplication, MockAgent, ResultObject } from '.';
4
+ // import { app, mock, mm } from './bootstrap';
5
+ export {};
6
+ // expectType<MockApplication>(app);
7
+ // expectType<Context>(app.currentContext);
8
+ // expectType<Context | undefined>(app.ctxStorage.getStore());
9
+ // expectType<MockApplication>(mock.app());
10
+ // expectType<MockApplication>(mm.app());
11
+ // expectType<MockAgent>(mm.app().mockAgent());
12
+ // expectType<Application>(mm.app().mockHttpclient('url', 'post', { data: 'ok' }));
13
+ // expectType<Application>(mm.app().mockHttpclient('url', 'post', 'data'));
14
+ // expectType<Application>(mm.app().mockHttpclient('url', {
15
+ // data: 'mock response',
16
+ // repeats: 1,
17
+ // }));
18
+ // expectType<Application>(mm.app().mockHttpclient('url', () => {}));
19
+ // expectType<Application>(mm.app().mockHttpclient('url', 'post', () => {}));
20
+ // expectType<Application>(mm.app().mockHttpclient('url', 'get', {
21
+ // data: 'mock response',
22
+ // repeats: 1,
23
+ // }));
24
+ // expectType<void>(app.mockLog());
25
+ // expectType<void>(app.mockLog('logger'));
26
+ // expectType<void>(app.mockLog(app.logger));
27
+ // expectType<void>(app.expectLog('foo string'));
28
+ // expectType<void>(app.expectLog('foo string', 'coreLogger'));
29
+ // expectType<void>(app.expectLog('foo string', app.coreLogger));
30
+ // expectType<void>(app.expectLog(/foo string/));
31
+ // expectType<void>(app.expectLog(/foo string/, 'coreLogger'));
32
+ // expectType<void>(app.expectLog(/foo string/, app.coreLogger));
33
+ // expectType<void>(mm.env('default'));
34
+ // expectType<void>(mm.env('devserver'));
35
+ // expectType<Promise<void>>(app.mockAgentRestore());
36
+ // expectType<Promise<void>>(app.mockRestore());
37
+ // expectType<Promise<void>>(app.mockContextScope(async () => {}));
38
+ // expectType<Promise<void>>(app.mockContextScope(async ctx => {}));
39
+ // expectType<Promise<void>>(app.backgroundTasksFinished());
40
+ // const result: ResultObject = {};
41
+ // expectType<number>(result.status!);
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXgudGVzdC1kLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2luZGV4LnRlc3QtZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxvQ0FBb0M7QUFDcEMsOENBQThDO0FBQzlDLGdFQUFnRTtBQUNoRSwrQ0FBK0M7O0FBRS9DLG9DQUFvQztBQUNwQywyQ0FBMkM7QUFDM0MsOERBQThEO0FBQzlELDJDQUEyQztBQUMzQyx5Q0FBeUM7QUFFekMsK0NBQStDO0FBRS9DLG1GQUFtRjtBQUNuRiwyRUFBMkU7QUFDM0UsMkRBQTJEO0FBQzNELDJCQUEyQjtBQUMzQixnQkFBZ0I7QUFDaEIsT0FBTztBQUNQLHFFQUFxRTtBQUNyRSw2RUFBNkU7QUFDN0Usa0VBQWtFO0FBQ2xFLDJCQUEyQjtBQUMzQixnQkFBZ0I7QUFDaEIsT0FBTztBQUVQLG1DQUFtQztBQUNuQywyQ0FBMkM7QUFDM0MsNkNBQTZDO0FBQzdDLGlEQUFpRDtBQUNqRCwrREFBK0Q7QUFDL0QsaUVBQWlFO0FBQ2pFLGlEQUFpRDtBQUNqRCwrREFBK0Q7QUFDL0QsaUVBQWlFO0FBQ2pFLHVDQUF1QztBQUN2Qyx5Q0FBeUM7QUFFekMscURBQXFEO0FBQ3JELGdEQUFnRDtBQUNoRCxtRUFBbUU7QUFDbkUsb0VBQW9FO0FBRXBFLDREQUE0RDtBQUU1RCxtQ0FBbUM7QUFDbkMsc0NBQXNDIn0=
@@ -0,0 +1,3 @@
1
+ import { MockAgent } from './parallel/agent.js';
2
+ export declare function setupAgent(): Promise<MockAgent>;
3
+ export declare function closeAgent(): Promise<void>;
@@ -0,0 +1,24 @@
1
+ import { debuglog } from 'node:util';
2
+ import { createAgent } from './parallel/agent.js';
3
+ import { getEggOptions } from './utils.js';
4
+ const debug = debuglog('@eggjs/mock/lib/agent_handler');
5
+ let agent;
6
+ export async function setupAgent() {
7
+ debug('setupAgent call, env.ENABLE_MOCHA_PARALLEL: %s, process.env.AUTO_AGENT: %s, agent: %s', process.env.ENABLE_MOCHA_PARALLEL, process.env.AUTO_AGENT, !!agent);
8
+ if (agent) {
9
+ await agent.ready();
10
+ return agent;
11
+ }
12
+ if (process.env.ENABLE_MOCHA_PARALLEL && process.env.AUTO_AGENT) {
13
+ agent = createAgent(getEggOptions());
14
+ await agent.ready();
15
+ }
16
+ return agent;
17
+ }
18
+ export async function closeAgent() {
19
+ debug('setupAgent call, agent: %s', !!agent);
20
+ if (agent) {
21
+ await agent.close();
22
+ }
23
+ }
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlbnRfaGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvYWdlbnRfaGFuZGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxXQUFXLEVBQWEsTUFBTSxxQkFBcUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRTNDLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO0FBRXhELElBQUksS0FBZ0IsQ0FBQztBQUVyQixNQUFNLENBQUMsS0FBSyxVQUFVLFVBQVU7SUFDOUIsS0FBSyxDQUFDLHVGQUF1RixFQUMzRixPQUFPLENBQUMsR0FBRyxDQUFDLHFCQUFxQixFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN0RSxJQUFJLEtBQUssRUFBRSxDQUFDO1FBQ1YsTUFBTSxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDcEIsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBQ0QsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLHFCQUFxQixJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDaEUsS0FBSyxHQUFHLFdBQVcsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDO1FBQ3JDLE1BQU0sS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFDRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFFRCxNQUFNLENBQUMsS0FBSyxVQUFVLFVBQVU7SUFDOUIsS0FBSyxDQUFDLDRCQUE0QixFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM3QyxJQUFJLEtBQUssRUFBRSxDQUFDO1FBQ1YsTUFBTSxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDdEIsQ0FBQztBQUNILENBQUMifQ==
@@ -0,0 +1,28 @@
1
+ import { Base } from 'sdk-base';
2
+ import type { Agent, Application } from 'egg';
3
+ import type { MockOptions, MockApplicationOptions } from './types.js';
4
+ declare const APP_INIT: unique symbol;
5
+ export declare class MockApplication extends Base {
6
+ #private;
7
+ _agent: Agent;
8
+ _app: Application;
9
+ options: MockApplicationOptions;
10
+ baseDir: string;
11
+ [APP_INIT]: boolean;
12
+ _initOnListeners: Set<any[]>;
13
+ _initOnceListeners: Set<any[]>;
14
+ constructor(options: MockApplicationOptions);
15
+ _init(): Promise<void>;
16
+ on(...args: any[]): this;
17
+ once(...args: any[]): this;
18
+ /**
19
+ * close app
20
+ */
21
+ _close(): Promise<void>;
22
+ /**
23
+ * @deprecated please use isClosed instead, keep compatible with old version
24
+ */
25
+ get closed(): boolean;
26
+ }
27
+ export declare function createApp(createOptions?: MockOptions): any;
28
+ export {};