Pepino e/ou webrat odeia & nbsp;?
-
13-09-2019 - |
Pergunta
Eu tenho uma etapa de pepino que recentemente começou a falhar quando um
foi adicionado ao meu layout. Se eu tomar o
Fora, todos os meus testes passam. Quando eu o coloquei de volta, todo teste que usa o método Click_link fornecido pela Webrat falha com a seguinte mensagem:
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''
Alguém tem alguma sugestão?
Solução
Eu tive o mesmo problema sob o Ruby 1.9 e o Rails 2.3.2, para que ele funcionasse, tive que fazer as seguintes alterações na gema Webrat.
Dentro lib/webrat/core/locators/link_locator.rb
Eu tive que mudar:
def replace_nbsp(str)
str.gsub([0xA0].pack('U'), ' ')
end
para
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
Havia também um patch submetido a Webrat Ticket 260, mas não funcionou para mim, então eu tive que fazer o acima. Espero que isto ajude.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow