【问题标题】:Can cucumber after hook get scenario variables?钩子后的黄瓜可以获取场景变量吗?
【发布时间】:2012-05-08 18:30:17
【问题描述】:

我的黄瓜场景如下:

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 挂钩的方法。

【问题讨论】:

    标签: ruby cucumber


    【解决方案1】:

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

    不过,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 是专门为清除测试或测试套件之间的测试数据而设计的,并且可能能够为您提供所需的内容,而无需手动滚动您自己的清理代码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-25
      • 1970-01-01
      • 2023-02-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-17
      相关资源
      最近更新 更多