168 lines
3.7 KiB
TypeScript
168 lines
3.7 KiB
TypeScript
|
|
declare namespace NodeJS {
|
|||
|
|
interface Global {
|
|||
|
|
wx: Object;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
const wx = {
|
|||
|
|
// mock 状态
|
|||
|
|
__mock__: {
|
|||
|
|
// 当前toast是否展示
|
|||
|
|
toastIsShow: false,
|
|||
|
|
// 当前modal是否展示
|
|||
|
|
modalIsShow: false,
|
|||
|
|
// storage 内容
|
|||
|
|
storage: {},
|
|||
|
|
},
|
|||
|
|
setStorage: jest.fn((options) => {
|
|||
|
|
if (options.key && options.data) {
|
|||
|
|
wx.__mock__.storage[options.key] = options.data;
|
|||
|
|
}
|
|||
|
|
}),
|
|||
|
|
getStorageSync: jest.fn((options) => wx.__mock__.storage[options]),
|
|||
|
|
getStorage: jest.fn((options) => {
|
|||
|
|
if (options.key && options.success && wx.__mock__.storage[options.key]) {
|
|||
|
|
return options.success({ data: wx.__mock__.storage[options.key] });
|
|||
|
|
}
|
|||
|
|
}),
|
|||
|
|
removeStorage: jest.fn((options) => {
|
|||
|
|
if (options.key) {
|
|||
|
|
delete wx.__mock__.storage[options.key];
|
|||
|
|
}
|
|||
|
|
}),
|
|||
|
|
showModal: jest.fn(() => {
|
|||
|
|
wx.__mock__.modalIsShow = true;
|
|||
|
|
}),
|
|||
|
|
showToast: jest.fn(() => {
|
|||
|
|
wx.__mock__.toastIsShow = true;
|
|||
|
|
}),
|
|||
|
|
hideToast: jest.fn(() => {
|
|||
|
|
wx.__mock__.toastIsShow = false;
|
|||
|
|
}),
|
|||
|
|
login: jest.fn((obj) => {
|
|||
|
|
if (typeof obj.success === "function") {
|
|||
|
|
obj.success({ code: "js_code_xxxxxxxx" });
|
|||
|
|
}
|
|||
|
|
if (typeof obj.complete === "function") {
|
|||
|
|
obj.complete();
|
|||
|
|
}
|
|||
|
|
}),
|
|||
|
|
checkSession: jest.fn((obj) => {
|
|||
|
|
if (typeof obj.fail === "function") {
|
|||
|
|
obj.fail();
|
|||
|
|
}
|
|||
|
|
}),
|
|||
|
|
request: jest.fn((obj) => {
|
|||
|
|
return new Promise((resolve, reject) => {
|
|||
|
|
process.nextTick(() => {
|
|||
|
|
const url = new URL(obj.url);
|
|||
|
|
const response = httpResponse[url.pathname];
|
|||
|
|
if (response && response.hasOwnProperty("statusCode")) {
|
|||
|
|
if (typeof obj.success === "function") {
|
|||
|
|
obj.success(response);
|
|||
|
|
}
|
|||
|
|
resolve(response);
|
|||
|
|
} else {
|
|||
|
|
if (typeof obj.fail === "function") {
|
|||
|
|
obj.fail(response);
|
|||
|
|
}
|
|||
|
|
reject(response);
|
|||
|
|
}
|
|||
|
|
if (typeof obj.complete === "function") {
|
|||
|
|
obj.complete();
|
|||
|
|
}
|
|||
|
|
});
|
|||
|
|
});
|
|||
|
|
}),
|
|||
|
|
uploadFile: jest.fn((obj) => {
|
|||
|
|
return new Promise((resolve, reject) => {
|
|||
|
|
process.nextTick(() => {
|
|||
|
|
const url = new URL(obj.url);
|
|||
|
|
const response = httpResponse[url.pathname];
|
|||
|
|
if (response.hasOwnProperty("statusCode")) {
|
|||
|
|
if (typeof obj.success === "function") {
|
|||
|
|
obj.success(response);
|
|||
|
|
}
|
|||
|
|
resolve(response);
|
|||
|
|
} else {
|
|||
|
|
if (typeof obj.fail === "function") {
|
|||
|
|
obj.fail(response);
|
|||
|
|
}
|
|||
|
|
reject(response);
|
|||
|
|
}
|
|||
|
|
if (typeof obj.complete === "function") {
|
|||
|
|
obj.complete();
|
|||
|
|
}
|
|||
|
|
});
|
|||
|
|
});
|
|||
|
|
}),
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
/** 根据不同的请求pathname,mock返回的内容 */
|
|||
|
|
const httpResponse = {
|
|||
|
|
"/success": {
|
|||
|
|
statusCode: 200,
|
|||
|
|
errMsg: "request:ok",
|
|||
|
|
header: {},
|
|||
|
|
data: {
|
|||
|
|
errcode: 0,
|
|||
|
|
data: {
|
|||
|
|
isSuccess: true,
|
|||
|
|
},
|
|||
|
|
},
|
|||
|
|
},
|
|||
|
|
"/successButNotJson": {
|
|||
|
|
statusCode: 200,
|
|||
|
|
errMsg: "request:ok",
|
|||
|
|
header: {},
|
|||
|
|
data: `{
|
|||
|
|
"errcode": 0,
|
|||
|
|
"data": {
|
|||
|
|
"isSuccess": true
|
|||
|
|
}
|
|||
|
|
}`,
|
|||
|
|
},
|
|||
|
|
"/sessionExpired": {
|
|||
|
|
statusCode: 200,
|
|||
|
|
errMsg: "request:ok",
|
|||
|
|
header: {},
|
|||
|
|
data: {
|
|||
|
|
errcode: -1,
|
|||
|
|
data: {
|
|||
|
|
},
|
|||
|
|
},
|
|||
|
|
},
|
|||
|
|
"/cgiError": {
|
|||
|
|
statusCode: 200,
|
|||
|
|
errMsg: "request:ok",
|
|||
|
|
header: {},
|
|||
|
|
data: {
|
|||
|
|
errcode: -100,
|
|||
|
|
msg: "业务错误提示",
|
|||
|
|
data: {},
|
|||
|
|
},
|
|||
|
|
},
|
|||
|
|
"/code2Session": {
|
|||
|
|
statusCode: 200,
|
|||
|
|
errMsg: "request:ok",
|
|||
|
|
header: {},
|
|||
|
|
data: {
|
|||
|
|
errcode: 0,
|
|||
|
|
data: {
|
|||
|
|
sid: "sid",
|
|||
|
|
},
|
|||
|
|
},
|
|||
|
|
},
|
|||
|
|
"/httpError": {
|
|||
|
|
statusCode: 500,
|
|||
|
|
errMsg: "request:ok",
|
|||
|
|
header: {},
|
|||
|
|
data: "",
|
|||
|
|
},
|
|||
|
|
"/networkError": {
|
|||
|
|
errMsg: "request:fail Failed to execute 'send' on 'XMLHttpRequest'",
|
|||
|
|
},
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
global.wx = wx;
|