水豚定义可选参数

capybara define optional parameter

 Given   Admin user with email and role:

我想用额外的参数创建相同的定义

给定具有电子邮件和角色的管理员用户并删除 table

尝试编写这个夹具

Given(/^Admin user with email and role(?: and drop table (.*)):$/) do |table, drop|
  add_location :drop_tables => drop || false
  table.hashes.each_with_index do |value, key|
    value[:"Postal Code"] ||= nil
    add_admin_user :role_name => value[:"Role"], :admin_email => value[:"Email"]
  end
  clear_memcache
end

所以如果 parametar 不存在,默认为 false,但是如果我们在定义中有 drop table,应该是 drop_tables =>true

drop_tables => drop || false

我想你要求的是

Given(/^Admin user with email and role( and drop table)?:$/) do |drop,table|
  add_location :drop_tables => !!drop
  table.hashes.each_with_index do |value, key|
    value[:"Postal Code"] ||= nil
    add_admin_user :role_name => value[:"Role"], :admin_email => value[:"Email"]
  end
  clear_memcache
end

如果使用“and drop table”文本,将设置 drop_tables: true,否则将设置 'drop_table: false'