【发布时间】:2017-03-26 20:13:03
【问题描述】:
步骤匹配可以通过Scope来确定: https://github.com/techtalk/SpecFlow/wiki/Scoped-bindings 。 但这是静态机制。 有没有办法使这种机制动态化,以便:
- 在单一场景中,我有两个或更多相同的步骤
- 这个步骤有很多步骤定义用(属性?)装饰
- 我有步骤更改上下文并基于此步骤中设置的键,将调用不同的方法
这就像来自 Scope 机制的 Tag 限制 + 动态性。
我在不同页面上使用多个表格测试应用程序。我必须验证:
- 表包含行(是子集)
- 表格有准确的行(项目和顺序)(相等)
- 表格有行(但顺序并不重要)。
我在写:
When I am on Page1
Then I expect that table contains
| Column1Name | Column2Name | Column3Name |
| row1id | true | address |
| row2id | true | address |
When I do some change action on rows
| Column1Name |
| row1id |
Then I expect that table contains
| Column1Name | Column2Name |
| row1id | false |
| row2id | true |
对于“我希望该表包含”,我只有一个步骤定义。 它验证步骤中提供的单元格。 此步骤用于不同页面的不同列和页面。 这些页面显示不同的业务对象,有不同的列,但 ui 很常见。 如果没有这个,我将不得不为每个页面和每个列组合编写步骤。
但与往常一样,在“我希望该表包含”之前应该采取一些具体的行动。 例如:
- 在不同页面上使用不同的搜索过滤器。
- 在 ui(服务、缓存等)上出现操作更改之前所需的超时时间
我不想显式地写它,因为它使那个场景充满了不必要的信息。
【问题讨论】:
-
这是不可能的,而且听起来可能令人困惑。为什么你认为你想要这个?你的用例是什么?可能有比您试图找到的更好的解决方案
-
感谢您的回答。我同意你的观点,这可能会令人困惑。我编辑了我的问题并添加了示例场景草案和概念。在我的案例中,我想避免写入许多相同/相似的步骤定义。
标签: specflow