2016-01-19 2 views
0

У меня есть тест контроллера работает RSpec для моего Rails 3.2 приложения, который выглядит следующим образом:Портирование с Rails 3.2 до Rails 4.2 RSpec тест have_selector терпит неудачу

get 'home' 
response.should have_selector("img", alt: "can-logo', src: "/assets/can-logo.png") 

Тест используется для передачи, когда мы использовали Rails 3.2. Теперь с Rails 4.2, тест не пройден, и сообщение об ошибке выглядит следующим образом:

Failure/Error: response.should have_selector("img", alt: "can-logo", src: "/assets/can-logo.png") 

    expected following output to contain a <img alt='can-logo' src='/assets/can-logo.png'/> 

Фактический ответ имеет следующую строку:

<img src="/assets/can-logo-7c448d46877fafd50ab64f7abae0ca10719221722dd3d1ae257f24fc449efa1d.png" alt="can-logo 7c448d46877fafd50ab64f7abae0ca10719221722dd3d1ae257f24fc449efa1d"> 

(Для справки, после того, как много регулировочные драгоценные камни, тесты, и некоторый код, я могу запустить приложение локально, и этот прецедент отлично работает, консоль Rails работает нормально, и 685 из 700 тестов из нашего тестового набора проходят. Из 15 неудачных тестов примерно 5 выглядят как этот сбой).

Похоже, что это делает что-то напуганное с активами, но я не понимаю, как заставить RSpec игнорировать его или как обслуживать ссылку без фанковой строки «7c44 ...» в конце имя изображения или имя альт.

Есть ли способ решить эту проблему?

ответ

0

Предполагая, что have_selector может просто взять селектор CSS, вы должны быть в состоянии сделать что-то вроде следующего

response.should have_selector('img[alt^="can-logo-"][src^="/assets/can-logo-"][src$=".png"]') 
+0

Это не сработало. Я получил ошибку Nokogiri :: CSS :: SyntaxError: неожиданную ошибку '/' после 'prefix_match'. –

+0

Является ли аргумент has_selector предположительным регулярным выражением Ruby? –

+0

Извините, я забыл, наверное, необходимые цитаты - обновленный ответ. Предполагая, что has_selector, который вы используете, принадлежит Webrat, я не думаю, что это потребовало регулярное выражение, поскольку оно преобразует его в XPath. Я мог ошибаться в этом, но прошло некоторое время, так как я использовал webrat –

Смежные вопросы