我的黄瓜情景如下:
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 hook的方法。
答案 0 :(得分:2)
实际上没有一种方法可以将信息专门传递给钩子,这是一件好事,你的场景应该不知道可能会执行或不执行任何钩子。
Hooks可以访问全局状态,因此您可以轻松地将每个创建的用户添加到全局数组中,并使用钩子清除这些用户:
# 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专门用于清除测试或测试套件之间的测试数据,并且可以为您提供所需的内容,而无需手动滚动自己的清理代码