creativesoftworks / behat-wiremock-context-extension
一个使用 Wiremock 作为 API 调用的测试替身的 Behat 扩展
v1.0.1
2014-07-29 09:23 UTC
Requires
- php: >=5.3.0
- behat/behat: ~2.4
- guzzle/guzzle: 3.*
Requires (Dev)
- phpspec/phpspec: 2.*
This package is not auto-updated.
Last update: 2024-09-14 15:40:29 UTC
README
一个使用 Wiremock 作为 API 调用的测试替身的 Behat 扩展。
版本和兼容性
- 版本 1.x 与 behat 2.4+ 兼容
- behat 3 不兼容(目前还不兼容...)
- Windows 不兼容
安装
通过 composer
"require-dev": { "creativesoftworks/behat-wiremock-context-extension": "1.*" }
您的 FeatureContext 类必须实现 CreativeSoftworks\BehatWiremockContextExtension\WiremockContextAware 接口,以下是一个示例
class FeatureContext implements WiremockContextAware { /** * @return \CreativeSoftworks\BehatWiremockContextExtension\WiremockContext */ public function getWiremockContext() { return $this->getSubcontext('WiremockContext'); } /** * @param \CreativeSoftworks\BehatWiremockContextExtension\WiremockContext $wiremockContext */ public function setWiremockContext(WiremockContext $wiremockContext) { $this->useContext('WiremockContext', $wiremockContext); } }
配置
在您的 behat.yml 中配置选项
your_profile_name: extensions: CreativeSoftworks\BehatWiremockContextExtension\Extension: wiremock_base_url: 'https://:8080' wiremock_mappings_path: 'app/Resources/wiremock/mappings'
该扩展将在每个场景执行前重置 Wiremock 映射,因此 wiremock_mappings_path 下的所有映射都将无序加载。通常,您可能希望确保某些映射成为 Wiremock 的默认映射(通常是成功响应而不是失败响应)。为了实现这一点,您可以在 wiremock_mappings_path 的相对路径下定义一个要加载的映射数组,如下例所示
default_mappings: - { service: service-name, mapping: mapping-file.json } - { service: service-name/and-subdirectory, mapping: another-mapping-file.json }
使用示例
WiremockContext 提供了一个步骤定义来提交映射到 Wiremock。以下是一个使用它的场景示例
Scenario:
Given the following services exist:
| service | mapping |
| greeting | helloWorld.json |
When I go to the "Hello World" page
Then I should see "Hello World!"
场景中的第一个步骤将文件 %wiremock_mappings_path%/greeting/helloWorld.json 中的映射信息 POST 到 Wiremock 服务器。有关使用 JSON 映射文件进行 Wiremock stubbing 的更多信息,请参阅 此信息。