333
schangxiang@126.com
2025-09-19 18966e02fb573c7e2bb0c6426ed792b38b910940
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
import { Application, Context } from 'egg';
import { MockMate } from 'mm';
 
export interface BaseMockApplication<T, C> extends Application { // tslint:disble-line
  ready(): Promise<void>;
  close(): Promise<void>;
  callback(): any;
 
  /**
   * mock Context
   */
  mockContext(data?: any): C;
 
  /**
   * mock cookie session
   */
  mockSession(data: any): T;
 
  mockCookies(cookies: any): T;
 
  mockHeaders(headers: any): T;
 
  /**
   * Mock service
   */
  mockService(service: string, methodName: string, fn: any): T;
 
  /**
   * mock service that return error
   */
  mockServiceError(service: string, methodName: string, err?: Error): T;
 
  mockHttpclient(mockUrl: string | RegExp, mockMethod: string | string[], mockResult: {
    data?: string | object;
    status?: number;
    headers?: any;
  }): Application;
 
  mockHttpclient(mockUrl: string | RegExp, mockResult: {
    data?: string | object;
    status?: number;
    headers?: any;
  }): Application;
 
  /**
   * mock csrf
   */
  mockCsrf(): T;
 
  /**
   * http request helper
   */
  httpRequest(): any;
}
 
export interface MockOption {
  /**
   * The directory of the application
   */
  baseDir?: string;
 
  /**
   * Custom you plugins
   */
  plugins?: any;
 
  /**
   * The directory of the egg framework
   */
  framework?: string;
 
  /**
   * Cache application based on baseDir
   */
  cache?: boolean;
 
  /**
   * Swtich on process coverage, but it'll be slower
   */
  coverage?: boolean;
 
  /**
   * Remove $baseDir/logs
   */
  clean?: boolean;
}
 
type EnvType = 'default' | 'test' | 'prod' | 'local' | 'unittest';
type LogLevel = 'DEBUG' | 'INFO' | 'WARN' | 'ERROR' | 'NONE';
 
export interface MockApplication extends BaseMockApplication<Application, Context> { }
 
export interface EggMock extends MockMate {
  /**
   * Create a egg mocked application
   */
  app: (option?: MockOption) => MockApplication;
 
  /**
   * Create a mock cluster server, but you can't use API in application, you should test using supertest
   */
  cluster: (option?: MockOption) => MockApplication;
 
  /**
   * mock the serverEnv of Egg
   */
  env: (env: EnvType) => void;
 
  /**
   * mock console level
   */
  consoleLevel: (level: LogLevel) => void;
 
  /**
   * set EGG_HOME path
   */
  home: (homePath: string) => void;
 
  /**
   * restore mock
   */
  restore: () => any;
}
 
declare const mm: EggMock;
export default mm;