creativesoftworks/behat-wiremock-context-extension

一个使用 Wiremock 作为 API 调用的测试替身的 Behat 扩展

v1.0.1 2014-07-29 09:23 UTC

This package is not auto-updated.

Last update: 2024-09-14 15:40:29 UTC


README

Scrutinizer Code QualityBuild Status

一个使用 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 的更多信息,请参阅 此信息