2009-08-12 9 views
5

Ho un passo cetriolo che ha iniziato di recente a mancare quando è stato aggiunto uno   al mio layout. Se prendo lo  , i miei test passano tutti. Quando ho messo di nuovo in, tutti i test che utilizza il metodo click_link fornito da Webrat riesce con il seguente messaggio:Cetriolo e/o Webrat odia  ?

And he follows 'Unsubscribe' 
    incompatible encoding regexp match (UTF-8 regexp with ASCII-8BIT string) (Encoding::CompatibilityError) 
    (eval):3:in `click_link` 
    (eval):2:in `click_link` 
    /path_to_project/webrat_steps.rb:19:in `/^(I|he|she) follows? '([^\"]*)'$/' 
    features/manage_subscriptions.feature:59:in `And he follows 'Unsubscribe'' 

Qualcuno ha qualche suggerimento?

risposta

5

Ho avuto lo stesso problema in Ruby 1.9 e Rails 2.3.2, per farlo funzionare ho dovuto apportare le seguenti modifiche alla gemma di webrat.

In lib/webrat/core/locators/link_locator.rb ho dovuto cambiare:

def replace_nbsp(str) 
    str.gsub([0xA0].pack('U'), ' ') 
end 

a

def replace_nbsp(str) 
    if str.respond_to?(:valid_encoding?) 
    str.force_encoding('UTF-8').gsub(/\xc2\xa0/u, ' ') 
    else 
    str.gsub(/\xc2\xa0/u, ' ') 
    end 
end 

C'era anche una patch submited a Webrat Ticket 260, ma non ha funzionato per me, così ho dovuto fare quanto sopra . Spero che questo ti aiuti.