如何测试需要javascript完成的场景?

时间:2011-09-28 02:34:16

标签: ruby-on-rails-3 testing integration-testing rspec2 factory-bot

我正在研究的项目从第三方服务获取数据并在本地缓存它以及我的应用程序的特定信息。

我的环境:

  • 我提供了针对服务搜索API的搜索机制。
  • 当用户第一次浏览项目页面时,我的服务器从服务中提取信息并存储
  • 在后续请求中,浏览器只是从我的服务器请求信息

.. 然而 ..我希望第三方服务的信息保持最新。

我的计划(反馈欢迎!)

  • 在页面加载后的后续请求中,某些JS将ping第三方服务以检查更新
  • 如果项目已更新,请将更新推送到我的副本服务器端

如何测试?

当我编写控制器规范时,我不认为页面的javascript被执行(从服务中获取自更新的项目)

我在尝试描述这个时遇到了很多麻烦,所以图表可能有所帮助。

enter image description here

我正在使用的技术:Rails / RSpec / Factory Girl / JQuery

2 个答案:

答案 0 :(得分:0)

让我们开箱即用,以解决这个问题。

请求页面时,您是否可以从后端点击第三方服务?然后你删除了对JavaScript的依赖。

还有一些比这更好的方法,比如将“更新项目信息”操作放入队列,然后在后端的后台处理它。这将允许第三方服务不会减慢您的网站速度。

答案 1 :(得分:0)

假设我目前的解决方案,看起来有几种方法可以测试它。

Thoughtbot创建了一个名为capybara-webkit的库,它将在后台启动webkit并通过它渲染/运行测试。硒是另一种。

github link

blog post

经过一段时间的中断后回到这个项目..使用capybara和:js =>真的似乎工作 - 一些棘手的时间问题,但其他方面很好去