我想测试添加事件的路线。 但是问题是:这个方法在POST中发送了很多关于50的参数。
Scenario Outline: Check Api Simple Test
Given I use http method "POST"
And I have param "sEventType" with value "<sEventType>"
And I have param "aFilters[]" with value "<aFilters[]>"
And I have param "nCompany" with value "<nCompany>"
..................................................
And I call url "<path>"
And I should to have "code" with value "<code>"
And I should to have "error" with value "<error>"
Examples :
|path ........
|..............
对于许多争论,本示例将使该功能难以理解。 用许多参数测试此路线的最佳实践是什么。 请帮助我,在此先感谢!
具有大量步骤的功能测试是反模式。 在每个步骤中,以代码编写,然后执行更多操作,然后根据需要重新使用这些步骤。 我有一些功能上下文,它们可以引入一些特质,这些特质可以一起工作以完成我需要的工作。
有时,代码可以是网络步骤的列表(我有一个注册函数,它是visit('url')fillFields(),pressButton()),而其他时候它们是读取或写入数据库的。
Scenario Outline: Check Api Simple Test
Given I prepare an API with appropriate parameters
When I call url "<path>"
Then I should to have "code" with value "<code>"
And I should to have "error" with value "<error>"
Behat是用于验收测试的,您正在尝试的称为集成测试。
如果要发布这些帖子变量,只需访问(URL),可以选择填写表格,然后提交。 这正是用户必须填写表格的方式。 如果对您来说太多了,也许对您的用户来说太多了。
When I fill in "form_element_name" with "value"
And I press "submit"
Then I should see "resultz"
但是,如果这确实是您需要的,请创建一个步骤定义“发布大量变量”,并在上下文文件中实现细节。
当它只是一个API端点时,我将使用集成测试来对控制器进行测试。
或者,您可以使用TableNodes(我知道我来晚了一点),但实际上,如果您使用以下代码段:
/**
* @Then /^I have the following param(?:|eter)s with values:$/
*/
public
function iHaveTheFollowingParamsWithValues(TableNode $table)
{
foreach ($table->getRowsHash() as $param => $value) {
$this->iHaveParamWithValue($param, $value);
}
}
和:
/**
* @Then /^I should have the following codes with values:$/
*/
public
function iShouldHaveTheFollowingCodesWithValues(TableNode $table)
{
foreach ($table->getRowsHash() as $code => $value) {
$this->iShouldHaveCodeWithValue($code, $value);
}
}
它将调用陈述的函数,并允许您将数据写入到表中,就像方案大纲的示例表一样。
如:
Scenario Outline: Check Api Simple Test
Given I use http method "POST"
And I have the following params with values:
|sEventType|<sEventType>|
|aFilters[]|<aFilters[]>|
|nCompany |<nCompany> |
..................................................
And I call url "<path>"
And I should have the following codes with values:
|code |<code> |
|error|<error>|
Examples :
|path ........
|..............
这将有助于提高可读性,并少量地加快测试编写和测试执行的速度。