WordPressMocks
为测试 WordPress 移动应用程序而设计的网络模拟
用法
Android
要在您的项目中使用此库,您必须将其设置为一个子目录。从您主要项目的主目录开始,添加以下子目录
$ git subtree add --prefix=libs/mocks [email protected]:wordpress-mobile/WordPressMocks.git trunk
这将在您的根目录中创建一个新的目录,libs/mocks
,包含此仓库的内容。
在此点,您可以将它添加到您项目根目录的 settings.gradle
include ':libs:mocks:WordPressMocks'
并添加到您的主应用模块的 build.gradle
依赖项
dependencies {
androidTestImplementation('com.github.tomakehurst:wiremock:2.23.2') {
exclude group: 'com.fasterxml.jackson.core', module: 'jackson-core'
exclude group: 'org.apache.httpcomponents', module: 'httpclient'
exclude group: 'org.apache.commons', module: 'commons-lang3'
exclude group: 'asm', module: 'asm'
exclude group: 'org.json', module: 'json'
}
androidTestImplementation 'org.apache.httpcomponents:httpclient-android:4.3.5.1'
androidTestImplementation project(path:':libs:mocks:WordPressMocks')
}
独立运行
要作为独立进程启动 WireMock 服务器,您可以使用以下命令运行它
./scripts/start.sh 8282
在这里 8282
是服务器运行的端口。现在可以通过 http://localhost:8282
访问。
贡献
您可以使用以下命令将此库的最新更改抓取到您的项目中:
$ git subtree pull --prefix=libs/mocks [email protected]:wordpress-mobile/WordPressMocks.git trunk --squash
您可以将自己的更改推送到 WordPressMocks
以使用以下命令将其流式传输到上游:
$ git subtree push --prefix=libs/mocks [email protected]:wordpress-mobile/WordPressMocks.git branch-name
注意:您可以将此存储库作为远程存储库添加,以简化 git subtree push
和 pull
命令。
$ git remote add mockslib [email protected]:wordpress-mobile/WordPressMocks.git
这将允许您使用以下表单而不是此表单:
$ git subtree pull --prefix=libs/mocks mockslib trunk --squash
创建模拟文件
WireMock 用于处理请求的 JSON 文件位于 src/main/assets
目录中。要生成其中一个文件,您首先需要设置 Charles Proxy(或类似工具)以便与您的 Android 模拟器一起使用。如果您从未进行过,我建议您从这篇文章开始学习。完成这些操作后,您需要遍历您正在测试的具体流程,并将必要响应的 JSON 内容存储在每个模拟文件的 response
字段的 jsonBody
字段中。
以下是一个示例:
{
"request": {
"urlPattern": "/rest/v1.1/me/",
"method": "GET"
},
"response": {
"status": 200,
"jsonBody": {
// ..... Your response here
},
"headers": {
"Content-Type": "application/json",
"Connection": "keep-alive",
"Cache-Control": "no-cache, must-revalidate, max-age=0"
}
}
}
这些文件用于在网络请求进行时进行匹配。有关 WireMock 的请求匹配更多信息,请查看其文档。
许可协议
WordPressMocks 是一个受 GNU 通用公共许可协议版本 2 涵盖的开源项目。