@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.
- package/LICENSE +21 -0
- package/README.md +547 -0
- package/README.zh_CN.md +512 -0
- package/dist/commonjs/app/extend/agent.d.ts +33 -0
- package/dist/commonjs/app/extend/agent.js +49 -0
- package/dist/commonjs/app/extend/application.d.ts +175 -0
- package/dist/commonjs/app/extend/application.js +448 -0
- package/dist/commonjs/app/middleware/cluster_app_mock.d.ts +3 -0
- package/dist/commonjs/app/middleware/cluster_app_mock.js +100 -0
- package/dist/commonjs/app.d.ts +6 -0
- package/dist/commonjs/app.js +20 -0
- package/dist/commonjs/bootstrap.d.ts +4 -0
- package/dist/commonjs/bootstrap.js +58 -0
- package/dist/commonjs/index.d.ts +76 -0
- package/dist/commonjs/index.js +99 -0
- package/dist/commonjs/index.test-d.d.ts +1 -0
- package/dist/commonjs/index.test-d.js +43 -0
- package/dist/commonjs/lib/agent_handler.d.ts +3 -0
- package/dist/commonjs/lib/agent_handler.js +28 -0
- package/dist/commonjs/lib/app.d.ts +28 -0
- package/dist/commonjs/lib/app.js +303 -0
- package/dist/commonjs/lib/app_handler.d.ts +5 -0
- package/dist/commonjs/lib/app_handler.js +67 -0
- package/dist/commonjs/lib/cluster.d.ts +114 -0
- package/dist/commonjs/lib/cluster.js +337 -0
- package/dist/commonjs/lib/context.d.ts +1 -0
- package/dist/commonjs/lib/context.js +16 -0
- package/dist/commonjs/lib/format_options.d.ts +5 -0
- package/dist/commonjs/lib/format_options.js +100 -0
- package/dist/commonjs/lib/inject_context.d.ts +6 -0
- package/dist/commonjs/lib/inject_context.js +132 -0
- package/dist/commonjs/lib/mock_agent.d.ts +5 -0
- package/dist/commonjs/lib/mock_agent.js +49 -0
- package/dist/commonjs/lib/mock_custom_loader.d.ts +1 -0
- package/dist/commonjs/lib/mock_custom_loader.js +37 -0
- package/dist/commonjs/lib/mock_http_server.d.ts +2 -0
- package/dist/commonjs/lib/mock_http_server.js +24 -0
- package/dist/commonjs/lib/mock_httpclient.d.ts +35 -0
- package/dist/commonjs/lib/mock_httpclient.js +147 -0
- package/dist/commonjs/lib/parallel/agent.d.ts +20 -0
- package/dist/commonjs/lib/parallel/agent.js +125 -0
- package/dist/commonjs/lib/parallel/app.d.ts +20 -0
- package/dist/commonjs/lib/parallel/app.js +115 -0
- package/dist/commonjs/lib/parallel/util.d.ts +3 -0
- package/dist/commonjs/lib/parallel/util.js +77 -0
- package/dist/commonjs/lib/prerequire.d.ts +1 -0
- package/dist/commonjs/lib/prerequire.js +26 -0
- package/dist/commonjs/lib/request_call_function.d.ts +1 -0
- package/dist/commonjs/lib/request_call_function.js +52 -0
- package/dist/commonjs/lib/restore.d.ts +1 -0
- package/dist/commonjs/lib/restore.js +16 -0
- package/dist/commonjs/lib/start-cluster.d.ts +2 -0
- package/dist/commonjs/lib/start-cluster.js +23 -0
- package/dist/commonjs/lib/supertest.d.ts +11 -0
- package/dist/commonjs/lib/supertest.js +48 -0
- package/dist/commonjs/lib/tmp/empty.d.ts +1 -0
- package/dist/commonjs/lib/tmp/empty.js +3 -0
- package/dist/commonjs/lib/types.d.ts +60 -0
- package/dist/commonjs/lib/types.js +3 -0
- package/dist/commonjs/lib/utils.d.ts +9 -0
- package/dist/commonjs/lib/utils.js +80 -0
- package/dist/commonjs/package.json +3 -0
- package/dist/commonjs/register.d.ts +8 -0
- package/dist/commonjs/register.js +80 -0
- package/dist/esm/app/extend/agent.d.ts +33 -0
- package/dist/esm/app/extend/agent.js +46 -0
- package/dist/esm/app/extend/application.d.ts +175 -0
- package/dist/esm/app/extend/application.js +442 -0
- package/dist/esm/app/middleware/cluster_app_mock.d.ts +3 -0
- package/dist/esm/app/middleware/cluster_app_mock.js +98 -0
- package/dist/esm/app.d.ts +6 -0
- package/dist/esm/app.js +17 -0
- package/dist/esm/bootstrap.d.ts +4 -0
- package/dist/esm/bootstrap.js +16 -0
- package/dist/esm/index.d.ts +76 -0
- package/dist/esm/index.js +90 -0
- package/dist/esm/index.test-d.d.ts +1 -0
- package/dist/esm/index.test-d.js +42 -0
- package/dist/esm/lib/agent_handler.d.ts +3 -0
- package/dist/esm/lib/agent_handler.js +24 -0
- package/dist/esm/lib/app.d.ts +28 -0
- package/dist/esm/lib/app.js +295 -0
- package/dist/esm/lib/app_handler.d.ts +5 -0
- package/dist/esm/lib/app_handler.js +61 -0
- package/dist/esm/lib/cluster.d.ts +114 -0
- package/dist/esm/lib/cluster.js +328 -0
- package/dist/esm/lib/context.d.ts +1 -0
- package/dist/esm/lib/context.js +13 -0
- package/dist/esm/lib/format_options.d.ts +5 -0
- package/dist/esm/lib/format_options.js +94 -0
- package/dist/esm/lib/inject_context.d.ts +6 -0
- package/dist/esm/lib/inject_context.js +126 -0
- package/dist/esm/lib/mock_agent.d.ts +5 -0
- package/dist/esm/lib/mock_agent.js +45 -0
- package/dist/esm/lib/mock_custom_loader.d.ts +1 -0
- package/dist/esm/lib/mock_custom_loader.js +34 -0
- package/dist/esm/lib/mock_http_server.d.ts +2 -0
- package/dist/esm/lib/mock_http_server.js +18 -0
- package/dist/esm/lib/mock_httpclient.d.ts +35 -0
- package/dist/esm/lib/mock_httpclient.js +144 -0
- package/dist/esm/lib/parallel/agent.d.ts +20 -0
- package/dist/esm/lib/parallel/agent.js +117 -0
- package/dist/esm/lib/parallel/app.d.ts +20 -0
- package/dist/esm/lib/parallel/app.js +110 -0
- package/dist/esm/lib/parallel/util.d.ts +3 -0
- package/dist/esm/lib/parallel/util.js +73 -0
- package/dist/esm/lib/prerequire.d.ts +1 -0
- package/dist/esm/lib/prerequire.js +25 -0
- package/dist/esm/lib/request_call_function.d.ts +1 -0
- package/dist/esm/lib/request_call_function.js +47 -0
- package/dist/esm/lib/restore.d.ts +1 -0
- package/dist/esm/lib/restore.js +13 -0
- package/dist/esm/lib/start-cluster.d.ts +2 -0
- package/dist/esm/lib/start-cluster.js +18 -0
- package/dist/esm/lib/supertest.d.ts +11 -0
- package/dist/esm/lib/supertest.js +40 -0
- package/dist/esm/lib/tmp/empty.d.ts +1 -0
- package/dist/esm/lib/tmp/empty.js +2 -0
- package/dist/esm/lib/types.d.ts +60 -0
- package/dist/esm/lib/types.js +2 -0
- package/dist/esm/lib/utils.d.ts +9 -0
- package/dist/esm/lib/utils.js +69 -0
- package/dist/esm/package.json +3 -0
- package/dist/esm/register.d.ts +8 -0
- package/dist/esm/register.js +75 -0
- package/dist/package.json +4 -0
- package/package.json +131 -0
- package/src/app/extend/agent.ts +56 -0
- package/src/app/extend/application.ts +512 -0
- package/src/app/middleware/cluster_app_mock.ts +101 -0
- package/src/app.ts +18 -0
- package/src/bootstrap.ts +25 -0
- package/src/index.d.ts +193 -0
- package/src/index.test-d.ts +47 -0
- package/src/index.ts +110 -0
- package/src/lib/agent_handler.ts +28 -0
- package/src/lib/app.ts +313 -0
- package/src/lib/app_handler.ts +69 -0
- package/src/lib/cluster.ts +363 -0
- package/src/lib/context.ts +14 -0
- package/src/lib/format_options.ts +103 -0
- package/src/lib/inject_context.ts +134 -0
- package/src/lib/mock_agent.ts +57 -0
- package/src/lib/mock_custom_loader.ts +36 -0
- package/src/lib/mock_http_server.ts +19 -0
- package/src/lib/mock_httpclient.ts +181 -0
- package/src/lib/parallel/agent.ts +128 -0
- package/src/lib/parallel/app.ts +123 -0
- package/src/lib/parallel/util.ts +66 -0
- package/src/lib/prerequire.ts +25 -0
- package/src/lib/request_call_function.ts +49 -0
- package/src/lib/restore.ts +14 -0
- package/src/lib/start-cluster.ts +23 -0
- package/src/lib/supertest.ts +45 -0
- package/src/lib/tmp/.gitkeep +0 -0
- package/src/lib/tmp/empty.ts +0 -0
- package/src/lib/types.ts +72 -0
- package/src/lib/utils.ts +82 -0
- 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,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,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,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,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
|
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
|
+
}
|