W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
在 adapters
中配置的 adapter
,會在 mock 初始化階段中自動依次 import
,new
對應的實例對象并執(zhí)行 run
方法,adapter
的 run
需要返回一個結(jié)果用于優(yōu)先替代后續(xù)的 mock 結(jié)果,若不返回或返回 undefined
則繼續(xù)執(zhí)行后續(xù)的 mock 流程,所以一個基本的 adapter
的結(jié)構如下:
export default class XXXAdapter {
private options: Record<string, any>
constructor(options) {
this.options = options
}
public run(runOptions: IRunOptions) {
// 執(zhí)行相關邏輯 獲取最終結(jié)果 result
return result || undefined
}
}
runOptions
參數(shù)?在 mock 初始化對應的實例對象后,自動調(diào)用的 run
方法會傳一些固定的參數(shù)提供給開發(fā)者使用,runOptions
目前包含四個屬性:
apiName
: 調(diào)用的 JSAPI 名稱,如 getSystemInfo
request
等,開發(fā)者可以根據(jù)該屬性選擇介入哪些 JSAPI 的 mock 流程;apiArguments
: 調(diào)用的 API 的傳參,例如調(diào)用 request
時的入?yún)?,可根?jù)參數(shù)不同執(zhí)行不會邏輯流程或返回不同結(jié)果;originalGlobal
: 小程序原生全局對象 如支付寶的 my
(微信的 wx
),該原生方法不會走 mock 流程避免 mock 嵌套死循環(huán);mockContext
: webpack require 的 mock 目錄結(jié)構,詳情可參考 webpack - Dependency Management;export default class XXXAdapter {
private options: Record<string, any>
constructor(options) {
this.options = options
}
public run(runOptions: IRunOptions) {
const { apiName, apiArguments, originalGlobal, mockContext } = runOptions
// 執(zhí)行相關邏輯 獲取最終結(jié)果 result
return result || undefined
}
}
adapter
傳參?在如何使用 adapter
的時候說過,每個 adapter 支持 string
類型和 array
兩種類型,想要給 adapter
傳參必須使用 array
類型,第二個參數(shù)為傳給 adapter 的參數(shù),傳入的參數(shù)可以在 constructor
的 options
中獲取
// mor.config.ts
export default defineConfig([
{
name: 'ali',
target: 'alipay',
...,
mock: {
...,
adapters: [
[
// 參數(shù)①: 本地 adapter 或 npm 包名
'your_adapter_name',
// 參數(shù)②: 提供 adapter 的參數(shù)
{
type: 'your_parameter_type',
api: 'your_parameter_api'
}
],
],
}
},
])
// your_adapter_name/index.ts
export default class MtopAdapter {
private options: Record<string, any>
constructor(options) {
this.options = options
}
public run(runOptions: IRunOptions) {
const { apiName, apiArguments, mockContext, originalGlobal } = runOptions
const {
type, // your_parameter_type
api // your_parameter_api
} = this.options || {}
// 執(zhí)行相關邏輯 獲取最終結(jié)果 result
return result
}
}
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: