黄瓜:阅读带占位符的模板

时间:2014-10-24 16:47:37

标签: ruby json templates cucumber placeholder

我正在编写一个黄瓜框架来测试一组使用长JSON格式参数的API调用。我想在模板文件中隐藏JSON,以使我的用户更容易阅读和DRYer,因为模板可能被其他场景和功能文件使用。模板包含占位符,我想装配黄瓜/红宝石代码来填写示例表中定义的值。似乎ERB是最接近替代品的人。但是,我还没有找到一种方法来绑定示例表中的定义。

可能唯一的方法是通过预处理器运行功能文件和模板,预处理器将它们组合在一起并制作最终的功能文件。如果可能的话,我正在寻找更优雅的单步解决方案。

示例功能文件代码:

Feature: Create users
Scenario Outline: Test create a merchant user

Given I am logged in
When I send a :post request to "createUser" using the "Merchant" template:
Then the JSON response should have "$..status" with the text "success"

Examples:
  | OrgName                   | KeyName             | KeyValue   |
  | CClient_RMBP_0_UNIQ_      | paramX              | TRUE       |
  | CClient_RMBP_1_UNIQ_      | paramY              | some text  |
  | CClient_RMBP_2_UNIQ_      | paramZ              | 12345      |

示例Merchant.json文件:

{
    "Organization": {
        "parameters": [
            {
                "key": "orgName",
                "value": {
                    "value": "<OrgName>"
                }
            },
            {
                "key": "<KeyName>",
                "value": {
                    "value": "<KeyValue>"
                }
            }
        ]
    },
    "parentOrganizationId": "1",
    "User": {
        "firstName": "Mary",
        "lastName": "Smith",
        "id": "<OrgName>",
        "language": "en",
        "locale": "US",
        "primaryEmail": "primary@mailaddr.com",
        "cellPhone": "1-123-456-7890"
    },
    "active": "true"
}

1 个答案:

答案 0 :(得分:0)

我更喜欢隐藏黄瓜步骤中响应格式的任何概念。

相反,我更倾向于让步骤更高,并在步骤定义中验证方法。

e.g。

When I attempt to create a user using the <type> template
Then the response is successful and contains the user's details

在我的步骤定义中,我将有一个validate_response方法,它捕获最后一个响应并根据输入检查用户详细信息。