2013-05-08 10 views
5

Cerco di passare il carattere spazio bianco nel mio test.Come ottenere uno spazio bianco o un oggetto nullo dal tavolo del cetriolo?

quindi cerco il seguente nel mio passo cetriolo

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

ottengo {"company_name"=>"", "phone"=>"\#{nil}"}

|company_name|phone| 
| | | 

ottengo {"company_name"=>"", "phone"=>""}

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

ottengo {"company_name"=>"\\s", "phone"=>"\nil"}

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

ottengo {"company_name"=>"\" \"", "phone"=>"' '"}

Cosa devo mettere nella tabella per ottenere il seguente hash {"company_name"=>" ", "phone"=>" "}?

+0

darci il codice che stai utilizzando. –

+0

Nessun codice necessario qui. Ho solo bisogno di passare tale stringa => "" o nil oggetto –

risposta

2

Non esiste alcun valore che è possibile inserire in una tabella di cetriolo interpretata come nil per impostazione predefinita. Puoi usare un cucumber Transform per fare quello che vuoi. Ad esempio, è possibile usare in questo modo se si voleva interpretare una stringa vuota come 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 

mettere questo in un file nella cartella di supporto. Ci sono anche altri metodi come map_column! ecc. Che puoi usare se vuoi trasformare solo una colonna.

+0

Ok! Ora è chiaro come passare nil oggetto. Ma, per esempio, in "company_address" ho bisogno di passare entrambi "" "" "' 'o' '" "" '' '. Come lo faccio? –

+0

@mef_ puoi trasformare solo determinati tasti usando 'map_column! 'Per quelli che vuoi trasformare o aggiungendo una seconda condizione per le chiavi del codice sopra. (Ad esempio, qualcosa come: 'h [k] = nil se v == '' e% W (company_name phone) .include? (K)' per mappare solo il nome dell'azienda e il telefono a zero se vuoto. voglio mappare altri valori a 'nil', aggiungere altre condizioni all'espressione allo stesso modo. –

+0

Grazie! Il metodo Transform mi aiuta. I caso in cui voglio mettere' '' "" '' 'Uso il metodo transform come questo' ' 'h [k] =" "se v == 's'''' Così nella mia tabella passo' ''' s'''' stringa –

Problemi correlati