1

Cucumber でテストされたアプリケーション、Rails があります。このアプリケーションには Google マップがあり、そのマップに「ピン」(マーカー) があるかどうかをテストする Cucumber-step が必要です。私の知る限り、ピンは DOM で見つけることができないため、ページがmap.addMarker()特定のパラメーターで呼び出されるかどうかを単純にテストすることを考えました。

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 と Google マップ API が実際にその呼び出しを可視ピンに変換するかどうかをテストすることには (本当に) 興味がありません (それは素晴らしいことですが)。今のところ、その JavaScript メソッドが呼び出されるかどうかをテストするだけで十分です。

page特定の JavaScript が含まれているかどうかをテストするにはどうすればよいですか? 上記のステップのコードは、実際のコンテンツのみをテストし、タグThen内のコンテンツを省略しています。<script>

4

1 に答える 1

0

秘訣は、を使用しないことでしたhave_contentが、次のようなより用途の広いセレクターですhave_xpath

page.should have_xpath "//script[contains(.,'map.addMarker(#{camping.latitude}, #{camping.longitude}, \"#{camping.name}\")')]"
于 2013-03-06T14:08:32.560 に答える