1

我应该assert在步骤以外的任何 BDD 步骤中使用then吗?

我试图了解如何使用 Specflow 来描述“更改用户配置文件”。

SCENARIO I can change a user  
Given I am at the roles page  
And I can see a list of users  
When I click a user's name  
| field    | value    |  
| User     | John Doe |  
And I change the user's name  
| field    | value    |  
| User     | Jane Doe |  
And I click the 'modify' button  
Then I should the user updated in the list  

我认为,第二个给定步骤And I can see a list of users应该在实现中有一个断言?

4

2 回答 2

0

我认为这不是And I can see a list of users一个有效的“给定”步骤。如果在某些情况下您可能在角色页面上看不到用户列表,那么无论导致您看到列表的任何情况都应指定为“给定”步骤,但如果您希望始终看到一个列表的用户,那么它不需要是“给定的”步骤。

也就是说,如果你应该总是看到用户列表,你应该有两个测试:

Given I am an admin
When I am at the roles page
Then I should see a list of users

Given I am an admin
And I am at the roles page
When I click a user's name
... etc.

或者,如果在某些情况下您可能看不到用户列表,那就是单独的“给定”:

Given I am an admin
And some users exist
When I am at the roles page
Then I should see a list of users

Given I am an admin
And some users exist
And I am at the roles page
When I click a user's name
... etc.

由于第一个测试通过,在第二个测试中您可以假设您看到了用户列表。

于 2013-05-20T18:25:25.597 回答
0

记住要指定什么而不是如何,并使用具体的例子。

场景:管理员可以编辑现有用户的个人资料详细信息

    Given user profiles exist
     | Name | Age |
     | Andy | 21  |
     | Sarah| 22  |
    And Admin has started editing Andy's profile
    When 'Andy's profile is changed to - name:'Bob' age:'99'
    Then the Admin's summary of users includes
     | Name  | Age|
     | Bob   | 99 | 
     | Sarah | 22 |
  1. 在数据库中创建这些配置文件(或断言它们已经存在于数据库中,如果不是从干净的设置中工作)。
  2. 编辑 Andy 的个人资料所需要做的一切(登录、导航等)
  3. 驱动UI更改名称
  4. 将 UI 驱动到用户摘要,从 ui 中提取数据并断言内容符合预期。
于 2013-05-31T12:08:06.433 回答