2013-05-08 49 views
5

我尝试在我的测试中传递空白字符。如何从黄瓜表中获得空白或零对象?

因此,我想在我的黄瓜步骤如下

If I enter: 
|company_name|phone| 
||#{nil}| 

我得到{"company_name"=>"", "phone"=>"\#{nil}"}

|company_name|phone| 
| | | 

我得到{"company_name"=>"", "phone"=>""}

|company_name|phone| 
|\s|\nil| 

我得到{"company_name"=>"\\s", "phone"=>"\nil"}

|company_name|phone| 
|" "|' '| 

我得到{"company_name"=>"\" \"", "phone"=>"' '"}

我应该把在桌子上得到以下哈希{"company_name"=>" ", "phone"=>" "}

+0

给我们你正在使用的代码。 – 2013-05-08 05:38:57

+0

这里没有需要的代码。 我只需要通过这样的字符串=>“”或零对象 – 2013-05-08 06:11:50

回答

2

默认情况下,您可以放入一个黄瓜表中,这个值被解释为nil。你可以用cucumber Transform来做你想做的事。例如,你可以使用这样的,如果你想解释一个空字符串作为nil:在文件

Transform /^table:company_name,phone$/ do |table| 
    table.hashes.map! do |h| 
    h.each_pair do |k,v| 
     h[k] = nil if v == '' #here, you can map any value you want to be nil 
    end 
    end 

    table 
end 

把这个在您的支持文件夹中。还有其他方法,如map_column!等,你可以使用,如果你只想转换一列。

+0

好吧!现在很清楚,如何传递零对象。 但是,例如,在“company_address”中,我需要同时传递'''''''或'''“”'''。我怎么做? – 2013-05-08 10:43:49

+0

@mef_您可以通过使用'map_column!'来转换您想要转换的键,或者通过添加关于以上代码的键的第二个条件来转换特定键。 (例如,如果v ==''和%W(公司电话).include?(k)'只将公司名称和电话映射为空(如果为空),则'h [k] = nil。想要将其他值映射到'nil',同样给表达式添加其他条件 – 2013-05-08 11:10:20

+0

Thanks!Transform method help me。 我想把'''''''''''''' 'h [k] =“”if v =='s'''' 因此,在我的表中,我通过了''''s''''字符串 – 2013-05-11 07:14:34