0

我的黄瓜场景如下:

Scenario: test add user
Given I logged in with email
When I add user with name test1 in my test
Then I should see my user
#After remove user with name test1

一些示例步骤定义如下:

When /^add user with name (\w+) in my test$/ do |name|
    @test.add_user(name)
end

我想在测试场景完成后删除我刚刚添加的用户以保持系统清洁。我可以通过使用 After hook 来实现这一点吗?我找不到将用户名传递到 After 挂钩的方法。

4

1 回答 1

2

实际上并没有一种方法可以专门将信息传递到钩子中,这是一件好事,您的场景应该不知道可能执行或不执行的任何钩子。

不过,钩子可以访问全局状态,因此您可以轻松地将每个创建的用户添加到全局数组中,并使用钩子清除这些用户:

# In step def
@test_users ||= []
@test_users << name
@test.add_user(name)

# In hook
@test_users.each { |u| @test.remove_user(u) }

值得指出的是,database_cleaner gem 是专门为清除测试或测试套件之间的测试数据而设计的,并且可能能够为您提供所需的内容,而无需手动滚动您自己的清理代码。

于 2012-05-08T10:30:17.960 回答