我只是在学习如果这是非常基本的那么道歉。我有这样的场景:
const list = new schema.Entity('lists', { todos: new schema.Array(todo) } , { idAttribute: '_id' });
const normalizedData = normalize(data, new schema.Array(list));
因此,第一个场景建立连接,然后JSON返回一个整数值。我现在希望将值替换为URL具有{id}占位符的下一个场景。
我尝试在第一个场景的FeatureContext.php文件中将$ this->输出设置为body(返回的整数),然后在第二个场景中执行preg_replace以将{id}更改为整数。似乎在运行第二个场景时,在调用该场景之前,输出将被清空。
以上是我的上下文方法:
Scenario: Create Task
Given I have the JSON payload:
"""
{
"task_list_id" : 3,
"title" : "From Behat",
"display_order" : 1
}
"""
When I send a POST request to task
Then one SQL ident is created
Scenario: Get the Task
When I send a GET request to "tasklist/{id}/tasks"
Then The response code should be 200
And The response content type should be "application/json"
答案 0 :(得分:-1)
当然是空白的,场景是并且应该是独立的,无论你在第一个场景中保存什么,都会在场景完成后丢失。
这样做的一种方法是写入文件并从文件中读取。
无论如何,我看到第一个场景的验证包括来自第二个场景的验证,唯一的区别是,在第一个场景中,你是保存响应的主体,不是一个很好的主意,也不是一个好的做法来保存验证步骤中的数据。
尝试尽可能多地重复使用。
场景保持独立。您应该能够在没有第一个场景的情况下运行第二个场景。
高级别的例子,只是一个意见:
Scenario: Api - check response of the created task
Given I have the JSON payload
When I create a task using POST request -> create request, make sure is successful and save response
And I send a GET request to created task -> use saved response to do what you need
Then the response code should be 200
And the response code should be "application/json"
另一个例子:
Scenario: Api - check response of the created task
Given I have have a task based on JSON: -> create request, make sure is successful and save response
When I send a GET request to created task -> use saved response to do what you need
Then the response code should be 200
And the response code should be "application/json"
这些只是一些例子,我不知道功能,我相信你的手杖做得更好,总是创建步骤,记住你的项目业务语言,以便以后了解它们。
taskList方法 您需要确保您有一个taskList,如果需要,您需要检查一个taskList是否可用(例如标题),如果是,则不执行任何其他操作创建任务列表。