2013-03-06 6 views
1

У меня есть приложение, Rails, проверено с помощью огурца. Это приложение имеет карту Google, и я хочу, чтобы шаг огурца проверял, имеет ли эта карта какие-то «штифты» (маркеры). Насколько я знаю, контакты не могут быть найдены в DOM, поэтому я решил просто проверить, вызывает ли страница map.addMarker() с определенными параметрами.тестовое содержимое javascript в огурце

Then /^I should see the top 50 campings on the map$/ do 
    Camping.geocoded.top(50).each do |camping| 
    page.should have_content /map\.addMarker\(#{camping.latitude}, #{camping.longitude}, "#{camping.name}"\)/ 
    end 
end 

страница имеет тег сценария в нижней части, которая наполняется с content_for, источник имеет:

<script> 
    $(document).ready(map.addMarker(51.7780246, 5.97571, "Bij Ons")) 
</script> 
</body> 

map.addMarker некоторые пользовательские JavaScript, который добавляет маркер на карте.

Я не очень заинтересован в тестировании, действительно ли мой пользовательский JavaScript и API карт Google превращает этот вызов в видимый вывод (хотя это было бы аккуратно); теперь просто проверяем, будет ли вызван метод JavaScript.

Как я могу проверить, содержит ли page JavaScript? Код в шаге Then выше, только тесты для фактического содержимого и опускает содержимое в теге <script>.

ответ

0

Хитрость в том, чтобы не использовать have_content, но более универсальный селектор, как have_xpath:

page.should have_xpath "//script[contains(.,'map.addMarker(#{camping.latitude}, #{camping.longitude}, \"#{camping.name}\")')]" 
+1

Это не работает для меня нужно добавить видимую ложное 'page.should have_xpath«// скрипт [содержит (., 'blah')] ", visible: false' –

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