@eggjs/mock 7.0.0-beta.19 → 7.0.0-beta.21

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 (63) hide show
  1. package/dist/app/extend/agent.d.ts +33 -38
  2. package/dist/app/extend/agent.js +45 -47
  3. package/dist/app/extend/application.d.ts +167 -171
  4. package/dist/app/extend/application.js +442 -382
  5. package/dist/app/middleware/cluster_app_mock.d.ts +2 -5
  6. package/dist/app/middleware/cluster_app_mock.js +99 -96
  7. package/dist/app.d.ts +5 -9
  8. package/dist/app.js +18 -17
  9. package/dist/bootstrap.d.ts +5 -9
  10. package/dist/bootstrap.js +12 -11
  11. package/dist/index.d.ts +76 -80
  12. package/dist/index.js +81 -38
  13. package/dist/inject_mocha.d.ts +1 -1
  14. package/dist/inject_mocha.js +28 -27
  15. package/dist/lib/agent_handler.d.ts +3 -7
  16. package/dist/lib/agent_handler.js +20 -22
  17. package/dist/lib/app.d.ts +3 -7
  18. package/dist/lib/app.js +285 -248
  19. package/dist/lib/app_handler.d.ts +5 -9
  20. package/dist/lib/app_handler.js +62 -49
  21. package/dist/lib/cluster.d.ts +92 -97
  22. package/dist/lib/cluster.js +335 -278
  23. package/dist/lib/context.d.ts +1 -4
  24. package/dist/lib/context.js +11 -10
  25. package/dist/lib/format_options.d.ts +2 -7
  26. package/dist/lib/format_options.js +88 -60
  27. package/dist/lib/inject_context.d.ts +1 -4
  28. package/dist/lib/inject_context.js +123 -103
  29. package/dist/lib/mock_agent.d.ts +4 -8
  30. package/dist/lib/mock_agent.js +42 -42
  31. package/dist/lib/mock_custom_loader.d.ts +1 -4
  32. package/dist/lib/mock_custom_loader.js +33 -34
  33. package/dist/lib/mock_http_server.d.ts +2 -6
  34. package/dist/lib/mock_http_server.js +17 -16
  35. package/dist/lib/mock_httpclient.d.ts +34 -38
  36. package/dist/lib/mock_httpclient.js +142 -106
  37. package/dist/lib/parallel/agent.d.ts +19 -23
  38. package/dist/lib/parallel/agent.js +113 -107
  39. package/dist/lib/parallel/app.d.ts +19 -23
  40. package/dist/lib/parallel/app.js +108 -96
  41. package/dist/lib/parallel/util.d.ts +3 -6
  42. package/dist/lib/parallel/util.js +64 -57
  43. package/dist/lib/prerequire.d.ts +1 -1
  44. package/dist/lib/prerequire.js +25 -1
  45. package/dist/lib/request_call_function.d.ts +1 -1
  46. package/dist/lib/request_call_function.js +47 -34
  47. package/dist/lib/restore.d.ts +1 -4
  48. package/dist/lib/restore.js +11 -14
  49. package/dist/lib/start-cluster.d.ts +2 -1
  50. package/dist/lib/start-cluster.js +14 -15
  51. package/dist/lib/supertest.d.ts +6 -11
  52. package/dist/lib/supertest.js +36 -35
  53. package/dist/lib/tmp/empty.d.ts +1 -1
  54. package/dist/lib/tmp/empty.js +2 -1
  55. package/dist/lib/types.d.ts +64 -68
  56. package/dist/lib/types.js +2 -1
  57. package/dist/lib/utils.d.ts +8 -11
  58. package/dist/lib/utils.js +63 -34
  59. package/dist/register.d.ts +7 -9
  60. package/dist/register.js +40 -36
  61. package/package.json +7 -8
  62. package/dist/_virtual/rolldown_runtime.js +0 -7
  63. package/dist/typings/index.d.ts +0 -1
@@ -1,6 +1,3 @@
1
- import { Context, Next } from "egg";
2
-
3
- //#region src/app/middleware/cluster_app_mock.d.ts
1
+ import { Context, type Next } from 'egg';
4
2
  declare const _default: () => (ctx: Context, next: Next) => Promise<void>;
5
- //#endregion
6
- export { _default as default };
3
+ export default _default;
@@ -1,97 +1,100 @@
1
- import { Context } from "egg";
2
- import { debuglog } from "node:util";
3
-
4
- //#region src/app/middleware/cluster_app_mock.ts
5
- const debug = debuglog("egg/mock/app/middleware/cluster_app_mock");
6
- var cluster_app_mock_default = () => {
7
- return async function clusterAppMock(ctx, next) {
8
- if (ctx.originalUrl !== "/__egg_mock_call_function") return next();
9
- const body = ctx.request.body;
10
- debug("%s %s, body: %j", ctx.method, ctx.url, body);
11
- const { method, property, args, needResult } = body;
12
- if (!method) {
13
- ctx.status = 422;
14
- ctx.body = {
15
- success: false,
16
- error: "Missing method"
17
- };
18
- return;
19
- }
20
- if (args && !Array.isArray(args)) {
21
- ctx.status = 422;
22
- ctx.body = {
23
- success: false,
24
- error: "args should be an Array instance"
25
- };
26
- return;
27
- }
28
- if (property) {
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 = {
40
- success: true,
41
- result: ctx.app[property]
42
- };
43
- return;
44
- }
45
- if (!ctx.app[property] || typeof ctx.app[property][method] !== "function") {
46
- debug("property %s.%s not exists on app", property, method);
47
- ctx.status = 422;
48
- ctx.body = {
49
- success: false,
50
- error: `method "${method}" not exists on app.${property}`
51
- };
52
- return;
53
- }
54
- } else if (typeof ctx.app[method] !== "function") {
55
- debug("method %s not exists on app", method);
56
- ctx.status = 422;
57
- ctx.body = {
58
- success: false,
59
- error: `method "${method}" not exists on app`
60
- };
61
- return;
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
- if (arg.__egg_mock_type === "function") args[i] = eval(`(function() { return ${arg.value} })()`);
68
- else if (arg.__egg_mock_type === "error") {
69
- const err = new Error(arg.message);
70
- err.name = arg.name;
71
- err.stack = arg.stack;
72
- for (const key in arg) if (key !== "name" && key !== "message" && key !== "stack" && key !== "__egg_mock_type") err[key] = arg[key];
73
- args[i] = err;
74
- }
75
- }
76
- }
77
- const target = property ? ctx.app[property] : ctx.app;
78
- const fn = target[method];
79
- try {
80
- Promise.resolve(fn.call(target, ...args)).then((result) => {
81
- ctx.body = needResult ? {
82
- success: true,
83
- result
84
- } : { success: true };
85
- });
86
- } catch (err) {
87
- ctx.status = 500;
88
- ctx.body = {
89
- success: false,
90
- error: err.message
91
- };
92
- }
93
- };
1
+ import { debuglog } from 'node:util';
2
+ import { Context } from 'egg';
3
+ const debug = debuglog('egg/mock/app/middleware/cluster_app_mock');
4
+ export default () => {
5
+ return async function clusterAppMock(ctx, next) {
6
+ // use originalUrl to make sure other middlewares can't change request url
7
+ if (ctx.originalUrl !== '/__egg_mock_call_function') {
8
+ return next();
9
+ }
10
+ const body = ctx.request.body;
11
+ debug('%s %s, body: %j', ctx.method, ctx.url, body);
12
+ const { method, property, args, needResult } = body;
13
+ if (!method) {
14
+ ctx.status = 422;
15
+ ctx.body = {
16
+ success: false,
17
+ error: 'Missing method',
18
+ };
19
+ return;
20
+ }
21
+ if (args && !Array.isArray(args)) {
22
+ ctx.status = 422;
23
+ ctx.body = {
24
+ success: false,
25
+ error: 'args should be an Array instance',
26
+ };
27
+ return;
28
+ }
29
+ if (property) {
30
+ // method: '__getter__' and property: 'config'
31
+ if (method === '__getter__') {
32
+ if (!ctx.app[property]) {
33
+ debug('property %s not exists on app', property);
34
+ ctx.status = 422;
35
+ ctx.body = {
36
+ success: false,
37
+ error: `property "${property}" not exists on app`,
38
+ };
39
+ return;
40
+ }
41
+ ctx.body = { success: true, result: ctx.app[property] };
42
+ return;
43
+ }
44
+ if (!ctx.app[property] || typeof ctx.app[property][method] !== 'function') {
45
+ debug('property %s.%s not exists on app', property, method);
46
+ ctx.status = 422;
47
+ ctx.body = {
48
+ success: false,
49
+ error: `method "${method}" not exists on app.${property}`,
50
+ };
51
+ return;
52
+ }
53
+ }
54
+ else {
55
+ if (typeof ctx.app[method] !== 'function') {
56
+ debug('method %s not exists on app', method);
57
+ ctx.status = 422;
58
+ ctx.body = {
59
+ success: false,
60
+ error: `method "${method}" not exists on app`,
61
+ };
62
+ return;
63
+ }
64
+ }
65
+ debug('call %s with %j', method, args);
66
+ for (let i = 0; i < args.length; i++) {
67
+ const arg = args[i];
68
+ if (arg && typeof arg === 'object') {
69
+ // convert __egg_mock_type back to function
70
+ if (arg.__egg_mock_type === 'function') {
71
+ // eslint-disable-next-line
72
+ args[i] = eval(`(function() { return ${arg.value} })()`);
73
+ }
74
+ else if (arg.__egg_mock_type === 'error') {
75
+ const err = new Error(arg.message);
76
+ err.name = arg.name;
77
+ err.stack = arg.stack;
78
+ for (const key in arg) {
79
+ if (key !== 'name' && key !== 'message' && key !== 'stack' && key !== '__egg_mock_type') {
80
+ err[key] = arg[key];
81
+ }
82
+ }
83
+ args[i] = err;
84
+ }
85
+ }
86
+ }
87
+ const target = property ? ctx.app[property] : ctx.app;
88
+ const fn = target[method];
89
+ try {
90
+ Promise.resolve(fn.call(target, ...args)).then(result => {
91
+ ctx.body = needResult ? { success: true, result } : { success: true };
92
+ });
93
+ }
94
+ catch (err) {
95
+ ctx.status = 500;
96
+ ctx.body = { success: false, error: err.message };
97
+ }
98
+ };
94
99
  };
95
-
96
- //#endregion
97
- export { cluster_app_mock_default as default };
100
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2x1c3Rlcl9hcHBfbW9jay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvbWlkZGxld2FyZS9jbHVzdGVyX2FwcF9tb2NrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFckMsT0FBTyxFQUFFLE9BQU8sRUFBYSxNQUFNLEtBQUssQ0FBQztBQUV6QyxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsMENBQTBDLENBQUMsQ0FBQztBQUVuRSxlQUFlLEdBQUcsRUFBRTtJQUNsQixPQUFPLEtBQUssVUFBVSxjQUFjLENBQUMsR0FBWSxFQUFFLElBQVU7UUFDM0QsMEVBQTBFO1FBQzFFLElBQUksR0FBRyxDQUFDLFdBQVcsS0FBSywyQkFBMkIsRUFBRSxDQUFDO1lBQ3BELE9BQU8sSUFBSSxFQUFFLENBQUM7UUFDaEIsQ0FBQztRQUNELE1BQU0sSUFBSSxHQUFJLEdBQUcsQ0FBQyxPQUFlLENBQUMsSUFBSSxDQUFDO1FBQ3ZDLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxHQUFHLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDcEQsTUFBTSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxHQUFHLElBQUksQ0FBQztRQUNwRCxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDWixHQUFHLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQztZQUNqQixHQUFHLENBQUMsSUFBSSxHQUFHO2dCQUNULE9BQU8sRUFBRSxLQUFLO2dCQUNkLEtBQUssRUFBRSxnQkFBZ0I7YUFDeEIsQ0FBQztZQUNGLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDakMsR0FBRyxDQUFDLE1BQU0sR0FBRyxH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
package/dist/app.d.ts CHANGED
@@ -1,10 +1,6 @@
1
- import { Application, ILifecycleBoot } from "egg";
2
-
3
- //#region src/app.d.ts
4
- declare class Boot implements ILifecycleBoot {
5
- #private;
6
- constructor(app: Application);
7
- configWillLoad(): void;
1
+ import { type ILifecycleBoot, Application } from 'egg';
2
+ export default class Boot implements ILifecycleBoot {
3
+ #private;
4
+ constructor(app: Application);
5
+ configWillLoad(): void;
8
6
  }
9
- //#endregion
10
- export { Boot as default };
package/dist/app.js CHANGED
@@ -1,17 +1,18 @@
1
- import { Application } from "egg";
2
-
3
- //#region src/app.ts
4
- var Boot = class {
5
- #app;
6
- constructor(app) {
7
- this.#app = app;
8
- }
9
- configWillLoad() {
10
- const index = this.#app.config.coreMiddleware.indexOf("securities");
11
- if (index >= 0) this.#app.config.coreMiddleware.splice(index, 0, "clusterAppMock");
12
- else this.#app.config.coreMiddleware.push("clusterAppMock");
13
- }
14
- };
15
-
16
- //#endregion
17
- export { Boot as default };
1
+ import { Application } from 'egg';
2
+ export default class Boot {
3
+ #app;
4
+ constructor(app) {
5
+ this.#app = app;
6
+ }
7
+ configWillLoad() {
8
+ // make sure clusterAppMock position before securities
9
+ const index = this.#app.config.coreMiddleware.indexOf('securities');
10
+ if (index >= 0) {
11
+ this.#app.config.coreMiddleware.splice(index, 0, 'clusterAppMock');
12
+ }
13
+ else {
14
+ this.#app.config.coreMiddleware.push('clusterAppMock');
15
+ }
16
+ }
17
+ }
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2FwcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXVCLFdBQVcsRUFBRSxNQUFNLEtBQUssQ0FBQztBQUV2RCxNQUFNLENBQUMsT0FBTyxPQUFPLElBQUk7SUFDdkIsSUFBSSxDQUFjO0lBQ2xCLFlBQVksR0FBZ0I7UUFDMUIsSUFBSSxDQUFDLElBQUksR0FBRyxHQUFHLENBQUM7SUFDbEIsQ0FBQztJQUVELGNBQWM7UUFDWixzREFBc0Q7UUFDdEQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNwRSxJQUFJLEtBQUssSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNmLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3JFLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3pELENBQUM7SUFDSCxDQUFDO0NBQ0YifQ==
@@ -1,9 +1,5 @@
1
- import ApplicationUnittest from "./app/extend/application.js";
2
- import { getBootstrapApp } from "./lib/app_handler.js";
3
- import proxyMock from "./index.js";
4
- import { strict as assert } from "node:assert";
5
-
6
- //#region src/bootstrap.d.ts
7
- declare const app: ApplicationUnittest;
8
- //#endregion
9
- export { type ApplicationUnittest as MockApplication, app, assert, getBootstrapApp, proxyMock as mm, proxyMock as mock };
1
+ import { strict as assert } from 'node:assert';
2
+ import mm, { mock, type MockApplication } from './index.ts';
3
+ import { getBootstrapApp } from './lib/app_handler.ts';
4
+ declare const app: MockApplication;
5
+ export { assert, getBootstrapApp, app, mm, mock, type MockApplication };
package/dist/bootstrap.js CHANGED
@@ -1,14 +1,15 @@
1
- import { getEggOptions } from "./lib/utils.js";
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";
2
5
  import { getBootstrapApp, setupApp } from "./lib/app_handler.js";
3
- import src_default, { mm as proxyMock } from "./index.js";
4
- import { strict as assert } from "node:assert";
5
- import path from "node:path";
6
- import { readJSONSync } from "utility";
7
-
8
- //#region src/bootstrap.ts
6
+ import { getEggOptions } from "./lib/utils.js";
9
7
  const options = getEggOptions();
10
- if (readJSONSync(path.join(options.baseDir || process.cwd(), "package.json")).eggPlugin) throw new Error("DO NOT USE bootstrap to test plugin");
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
+ }
11
13
  const app = setupApp();
12
-
13
- //#endregion
14
- export { app, assert, getBootstrapApp, src_default as mm, proxyMock as mock };
14
+ export { assert, getBootstrapApp, app, mm, mock };
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9vdHN0cmFwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2Jvb3RzdHJhcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxJQUFJLE1BQU0sRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMvQyxPQUFPLElBQUksTUFBTSxXQUFXLENBQUM7QUFFN0IsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUV2QyxPQUFPLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBd0IsTUFBTSxZQUFZLENBQUM7QUFDNUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFL0MsTUFBTSxPQUFPLEdBQUcsYUFBYSxFQUFFLENBQUM7QUFFaEMseURBQXlEO0FBQ3pELE1BQU0sT0FBTyxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLElBQUksT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLGNBQWMsQ0FBQyxDQUFDLENBQUM7QUFDMUYsSUFBSSxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDdEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDO0FBQ3pELENBQUM7QUFFRCxNQUFNLEdBQUcsR0FBRyxRQUFRLEVBQUUsQ0FBQztBQUV2QixPQUFPLEVBQUUsTUFBTSxFQUFFLGVBQWUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBd0IsQ0FBQyJ9
package/dist/index.d.ts CHANGED
@@ -1,81 +1,77 @@
1
- import { MockHttpClientMethod, MockResponseCallbackOptions, MockResultFunction, MockResultOptions, ResultObject } from "./lib/mock_httpclient.js";
2
- import { MockAgent, MockApplicationOptions, MockClusterApplicationOptions, MockClusterOptions, MockOption, MockOptions } from "./lib/types.js";
3
- import ApplicationUnittest from "./app/extend/application.js";
4
- import { MockClusterApplication, createCluster } from "./lib/cluster.js";
5
- import { createApp } from "./lib/app.js";
6
- import { restore as restore$1 } from "./lib/restore.js";
7
- import { setGetAppCallback } from "./lib/app_handler.js";
8
- import * as mm0 from "mm";
9
- import { mock } from "mm";
10
-
11
- //#region src/index.d.ts
12
- declare const mock$1: {
13
- restore: typeof restore$1;
14
- /**
15
- * Create a egg mocked application
16
- * @function mm#app
17
- * @param {Object} [options]
18
- * - {String} baseDir - The directory of the application
19
- * - {Object} plugins - Custom you plugins
20
- * - {String} framework - The directory of the egg framework
21
- * - {Boolean} [true] cache - Cache application based on baseDir
22
- * - {Boolean} [true] coverage - Switch on process coverage, but it'll be slower
23
- * - {Boolean} [true] clean - Remove $baseDir/logs
24
- * @return {App} return {@link Application}
25
- * @example
26
- * ```js
27
- * const app = mm.app();
28
- * ```
29
- */
30
- app: typeof createApp;
31
- /**
32
- * Create a egg mocked cluster application
33
- * @function mm#cluster
34
- * @see ClusterApplication
35
- */
36
- cluster: typeof createCluster;
37
- /**
38
- * mock the serverEnv of Egg
39
- * @member {Function} mm#env
40
- * @param {String} env - contain default, test, prod, local, unittest
41
- * @see https://github.com/eggjs/egg-core/blob/master/lib/loader/egg_loader.js#L78
42
- */
43
- env(env: string): void;
44
- /**
45
- * mock console level
46
- * @param {String} level - logger level
47
- */
48
- consoleLevel(level: string): void;
49
- home(homePath?: string): void;
50
- setGetAppCallback: typeof setGetAppCallback;
51
- isMocked: typeof mm0.isMocked;
52
- mock: typeof mock;
53
- mm: typeof mock;
54
- datas: typeof mm0.datas;
55
- mockDatas: typeof mm0.datas;
56
- data: typeof mm0.data;
57
- mockData: typeof mm0.data;
58
- dataWithAsyncDispose: typeof mm0.dataWithAsyncDispose;
59
- empty: typeof mm0.empty;
60
- mockEmpty: typeof mm0.empty;
61
- error: typeof mm0.error;
62
- mockError: typeof mm0.error;
63
- spy: typeof mm0.spy;
64
- errorOnce: typeof mm0.errorOnce;
65
- syncError: typeof mm0.syncError;
66
- syncEmpty: typeof mm0.syncEmpty;
67
- syncData: typeof mm0.syncData;
68
- http: {
69
- request: (url: mm0.RequestURL, data: mm0.ResponseData, headers?: Record<string, any>, delay?: number) => void;
70
- requestError: (url: mm0.RequestURL, reqError?: mm0.MockError, resError?: mm0.MockError, delay?: number) => void;
71
- };
72
- https: {
73
- request: (url: mm0.RequestURL, data: mm0.ResponseData, headers?: Record<string, any>, delay?: number) => void;
74
- requestError: (url: mm0.RequestURL, reqError?: mm0.MockError, resError?: mm0.MockError, delay?: number) => void;
75
- };
76
- spawn: typeof mm0.spawn;
77
- classMethod: typeof mm0.classMethod;
1
+ import { mock as _mock } from 'mm';
2
+ import { createCluster, type MockClusterApplication } from './lib/cluster.ts';
3
+ import { createApp } from './lib/app.ts';
4
+ import { restore } from './lib/restore.ts';
5
+ import { setGetAppCallback } from './lib/app_handler.ts';
6
+ import type ApplicationUnittest from './app/extend/application.ts';
7
+ export * from './lib/types.ts';
8
+ declare const mock: {
9
+ restore: typeof restore;
10
+ /**
11
+ * Create a egg mocked application
12
+ * @function mm#app
13
+ * @param {Object} [options]
14
+ * - {String} baseDir - The directory of the application
15
+ * - {Object} plugins - Custom you plugins
16
+ * - {String} framework - The directory of the egg framework
17
+ * - {Boolean} [true] cache - Cache application based on baseDir
18
+ * - {Boolean} [true] coverage - Switch on process coverage, but it'll be slower
19
+ * - {Boolean} [true] clean - Remove $baseDir/logs
20
+ * @return {App} return {@link Application}
21
+ * @example
22
+ * ```js
23
+ * const app = mm.app();
24
+ * ```
25
+ */
26
+ app: typeof createApp;
27
+ /**
28
+ * Create a egg mocked cluster application
29
+ * @function mm#cluster
30
+ * @see ClusterApplication
31
+ */
32
+ cluster: typeof createCluster;
33
+ /**
34
+ * mock the serverEnv of Egg
35
+ * @member {Function} mm#env
36
+ * @param {String} env - contain default, test, prod, local, unittest
37
+ * @see https://github.com/eggjs/egg-core/blob/master/lib/loader/egg_loader.js#L78
38
+ */
39
+ env(env: string): void;
40
+ /**
41
+ * mock console level
42
+ * @param {String} level - logger level
43
+ */
44
+ consoleLevel(level: string): void;
45
+ home(homePath?: string): void;
46
+ setGetAppCallback: typeof setGetAppCallback;
47
+ isMocked: typeof import("mm").isMocked;
48
+ mock: typeof _mock;
49
+ mm: typeof _mock;
50
+ datas: typeof import("mm").datas;
51
+ mockDatas: typeof import("mm").datas;
52
+ data: typeof import("mm").data;
53
+ mockData: typeof import("mm").data;
54
+ dataWithAsyncDispose: typeof import("mm").dataWithAsyncDispose;
55
+ empty: typeof import("mm").empty;
56
+ mockEmpty: typeof import("mm").empty;
57
+ error: typeof import("mm").error;
58
+ mockError: typeof import("mm").error;
59
+ spy: typeof import("mm").spy;
60
+ errorOnce: typeof import("mm").errorOnce;
61
+ syncError: typeof import("mm").syncError;
62
+ syncEmpty: typeof import("mm").syncEmpty;
63
+ syncData: typeof import("mm").syncData;
64
+ http: {
65
+ request: (url: import("mm").RequestURL, data: import("mm").ResponseData, headers?: Record<string, any>, delay?: number) => void;
66
+ requestError: (url: import("mm").RequestURL, reqError?: import("mm").MockError, resError?: import("mm").MockError, delay?: number) => void;
67
+ };
68
+ https: {
69
+ request: (url: import("mm").RequestURL, data: import("mm").ResponseData, headers?: Record<string, any>, delay?: number) => void;
70
+ requestError: (url: import("mm").RequestURL, reqError?: import("mm").MockError, resError?: import("mm").MockError, delay?: number) => void;
71
+ };
72
+ spawn: typeof import("mm").spawn;
73
+ classMethod: typeof import("mm").classMethod;
78
74
  };
79
- declare const proxyMock: ((target: any, property: PropertyKey, value?: any) => void) & typeof mock$1;
80
- //#endregion
81
- export { MockAgent, type ApplicationUnittest as MockApplication, MockApplicationOptions, type MockClusterApplication, MockClusterApplicationOptions, MockClusterOptions, MockHttpClientMethod, MockOption, MockOptions, MockResponseCallbackOptions, MockResultFunction, MockResultOptions, ResultObject, createApp, createCluster, proxyMock as default, proxyMock as mm, proxyMock as mock, setGetAppCallback };
75
+ declare const proxyMock: ((target: any, property: PropertyKey, value?: any) => void) & typeof mock;
76
+ export default proxyMock;
77
+ export { proxyMock as mock, proxyMock as mm, type MockClusterApplication, type ApplicationUnittest as MockApplication, setGetAppCallback, createApp, createCluster, };
package/dist/index.js CHANGED
@@ -1,47 +1,90 @@
1
+ import mm from 'mm';
2
+ import { mock as _mock } from 'mm';
1
3
  import { createCluster } from "./lib/cluster.js";
2
4
  import { createApp } from "./lib/app.js";
3
- import { restore as restore$1 } from "./lib/restore.js";
5
+ // import { getMockAgent } from './lib/mock_agent.js';
6
+ import { restore } from "./lib/restore.js";
4
7
  import { setGetAppCallback } from "./lib/app_handler.js";
5
- import mm$1, { mock } from "mm";
6
-
7
- //#region src/index.ts
8
- const mock$1 = {
9
- ...mm$1,
10
- restore: restore$1,
11
- app: createApp,
12
- cluster: createCluster,
13
- env(env) {
14
- mock(process.env, "EGG_MOCK_SERVER_ENV", env);
15
- mock(process.env, "EGG_SERVER_ENV", env);
16
- },
17
- consoleLevel(level) {
18
- level = (level || "").toUpperCase();
19
- mock(process.env, "EGG_LOG", level);
20
- },
21
- home(homePath) {
22
- if (homePath) mock(process.env, "EGG_HOME", homePath);
23
- },
24
- setGetAppCallback
8
+ export * from "./lib/types.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,
25
64
  };
26
- const proxyMock = new Proxy(mock, {
27
- apply(target, _, args) {
28
- return target(args[0], args[1], args[2]);
29
- },
30
- get(_target, property, receiver) {
31
- return Reflect.get(mock$1, property, receiver);
32
- }
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
+ },
33
75
  });
34
- var src_default = proxyMock;
76
+ export default proxyMock;
77
+ export { proxyMock as mock,
78
+ // alias to mm
79
+ proxyMock as mm, setGetAppCallback, createApp, createCluster, };
35
80
  process.setMaxListeners(100);
36
- process.once("SIGQUIT", () => {
37
- process.exit(0);
81
+ process.once('SIGQUIT', () => {
82
+ process.exit(0);
38
83
  });
39
- process.once("SIGTERM", () => {
40
- process.exit(0);
84
+ process.once('SIGTERM', () => {
85
+ process.exit(0);
41
86
  });
42
- process.once("SIGINT", () => {
43
- process.exit(0);
87
+ process.once('SIGINT', () => {
88
+ process.exit(0);
44
89
  });
45
-
46
- //#endregion
47
- export { createApp, createCluster, src_default as default, proxyMock as mm, proxyMock as mock, setGetAppCallback };
90
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ3BCLE9BQU8sRUFBRSxJQUFJLElBQUksS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBRW5DLE9BQU8sRUFBRSxhQUFhLEVBQStCLE1BQU0sa0JBQWtCLENBQUM7QUFDOUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN6QyxzREFBc0Q7QUFDdEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBR3pELGNBQWMsZ0JBQWdCLENBQUM7QUFFL0IsNkRBQTZEO0FBQzdELHdDQUF3QztBQUN4QyxpQ0FBaUM7QUFDakMsSUFBSTtBQUVKLHVCQUF1QjtBQUN2QixNQUFNLElBQUksR0FBRztJQUNYLEdBQUcsRUFBRTtJQUNMLE9BQU87SUFFUDs7Ozs7Ozs7Ozs7Ozs7O09BZUc7SUFDSCxHQUFHLEVBQUUsU0FBUztJQUVkOzs7O09BSUc7SUFDSCxPQUFPLEVBQUUsYUFBYTtJQUV0Qjs7Ozs7T0FLRztJQUNILEdBQUcsQ0FBQyxHQUFXO1FBQ2IsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUscUJBQXFCLEVBQUUsR0FBVSxDQUFDLENBQUM7UUFDdEQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsZ0JBQWdCLEVBQUUsR0FBVSxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVEOzs7T0FHRztJQUNILFlBQVksQ0FBQyxLQUFhO1FBQ3hCLEtBQUssR0FBRyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNwQyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUUsS0FBWSxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELElBQUksQ0FBQyxRQUFpQjtRQUNwQixJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQ2IsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsVUFBVSxFQUFFLFFBQWUsQ0FBQyxDQUFDO1FBQ2xELENBQUM7SUFDSCxDQUFDO0lBRUQsaUJBQWlCO0NBQ2xCLENBQUM7QUFFRixnQ0FBZ0M7QUFDaEMsTUFBTSxTQUFTLEdBQUcsSUFBSSxLQUFLLENBQUMsS0FBSyxFQUFFO0lBQ2pDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLElBQUk7UUFDbkIsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBQ0QsR0FBRyxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsUUFBUTtRQUM3QixnQ0FBZ0M7UUFDaEMsMEJBQTBCO1FBQzFCLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQy9DLENBQUM7Q0FDRixDQUF5RixDQUFDO0FBRTNGLGVBQWUsU0FBUyxDQUFDO0FBRXpCLE9BQU8sRUFDTCxTQUFTLElBQUksSUFBSTtBQUNqQixjQUFjO0FBQ2QsU0FBUyxJQUFJLEVBQUUsRUFHZixpQkFBaUIsRUFDakIsU0FBUyxFQUNULGFBQWEsR0FDZCxDQUFDO0FBRUYsT0FBTyxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUU3QixPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxHQUFHLEVBQUU7SUFDM0IsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsQixDQUFDLENBQUMsQ0FBQztBQUVILE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLEdBQUcsRUFBRTtJQUMzQixPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2xCLENBQUMsQ0FBQyxDQUFDO0FBRUgsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFO0lBQzFCLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbEIsQ0FBQyxDQUFDLENBQUMifQ==
@@ -1 +1 @@
1
- import "mocha";
1
+ import 'mocha';