swift - 在 swift 中实现用于自动化测试的 Screenplay 模式
问题描述
我目前正在学习剧本模式,但在使用 Given 关键字时遇到了问题。对于我当前的用例,这似乎应该是一个问题。
Given(user).has(OpenedTheApplication.successfully())
has 被定义为一个任务
func has(_ task: Task) {
perform(task)
}
gherkin 关键字定义如下:
class Given: GherkinKeyword {
func has(_ task: Task) {
actor.has(task)
}
}
因此,如果我正确理解剧本,那么任务不应创建有关系统状态的查询。
所以我想定义这个:
Given(user).wasAbleTo(OpenTheApplication.toTheHomePage())
接着
func wasAbleTo(_ question: Question) {
ask(question)
}
并且 gherkin 关键字也更新了:
class Given: GherkinKeyword {
func has(_ task: Task) {
actor.has(task)
}
func wasAbleTo(_ question: Question) {
actor.wasAbleTo(question)
}
}
这是断言应用程序已正确启动的正确思维方式吗?
解决方案
如果您想对任何事情进行断言,那么这应该是“那么”,而不是“给定”。如果您担心测试所需的设置(Givens)的任何部分可能不起作用,最好编写一个单独的测试来检查这些功能。这将允许您使用更复杂的测试所需的任何设置,而无需在设置(给定)阶段断言(问题)。
您需要的测试的 Gherkin 可能如下所示:
Scenario: Homepage is presented on app launch
When the user launches the application successfully
Then the user sees the homepage
Scenario: Navigate to search
Given the user has launched the application successfully
When the user navigates to the search page
Then the user sees the search page
推荐阅读
- javascript - 单击按钮后等待ajax请求解决
- sql - 带有 LIKE 子句的 SQL LEFT JOIN 仅给出一行
- mysql - #1136 - 列计数与第 1 行的值计数不匹配,不缺少逗号。值中没有额外的逗号
- node.js - LoopBack 4 - 在 API 资源管理器中添加“授权”按钮
- rest - 在 Bot Framework 中外部 API 调用成功时发送消息
- python - ParseError:格式不正确(无效标记):第 47 行,第 27 列
- c++ - 无法从另一个函数访问指针数组
- angular - RxJS 嵌套订阅
- javascript - 异步 setTimeout 阻止快速处理,直到 res.send 发生
- java - spring 应用程序中的 CORS 策略阻止了来自 Angular 应用程序的请求