什么';在rails应用程序中,对大量使用Javascript的UI进行集成测试的最佳方法是什么?

什么';在rails应用程序中,对大量使用Javascript的UI进行集成测试的最佳方法是什么?,javascript,ruby-on-rails,ruby-on-rails-3,Javascript,Ruby On Rails,Ruby On Rails 3,我们有一个web应用程序,它在UI中广泛使用AJAXy Javascript。我们使用Shoulda和Webrat几乎完全覆盖了后端的代码,并且希望扩展我们的测试套件,以包括通过Javascript UI的完整集成测试 我们试过硒,但发现它易碎且易变坏。还有更可靠的选择吗 更新 对于那些仍在检查这一点的人,我们最终使用了Xvfb,这样我们就可以在没有屏幕的情况下运行Firefox。允许我们在无头Jenkins CI服务器上运行测试。我们仍然需要偶尔在本地运行“实时”测试以进行调试,但它运行得非常

我们有一个web应用程序,它在UI中广泛使用AJAXy Javascript。我们使用Shoulda和Webrat几乎完全覆盖了后端的代码,并且希望扩展我们的测试套件,以包括通过Javascript UI的完整集成测试

我们试过硒,但发现它易碎且易变坏。还有更可靠的选择吗

更新


对于那些仍在检查这一点的人,我们最终使用了Xvfb,这样我们就可以在没有屏幕的情况下运行Firefox。允许我们在无头Jenkins CI服务器上运行测试。我们仍然需要偶尔在本地运行“实时”测试以进行调试,但它运行得非常好。

这是我一直在努力解决的问题,因为我正在使用ExtJS(一种非常强大的浏览器JavaScript UI构建器)和Rails进行一些工作

在研究了很多不同的选择之后。我还没有找到一个完美的解决方案。理想情况下,我可以无头运行它们,只报告输出。不幸的是,没有一个模拟器能够无缝地运行具有完整DOM支持的JavaScript(至少,我发现的选项都没有)。因此,这几乎意味着您必须在真正的解释器(如浏览器)中运行功能齐全的JavaScript代码。假设您愿意处理将请求正确地传递到UI的痛苦,那么使用Selenium的Webrat工作得可以接受。如果您使用的是自己的JavaScript,那么这可能会更容易。但是,当涉及到一个您无法控制的第三方UI库时,我们可以说,它肯定会很有趣


也许不是最有用的回答,但这是我迄今为止的发现

嗯,我想让水豚看看,它可以使用selenium webdriver(不要与selenium RC混淆,它们是不同的)进行javascript测试。我还没有发现它和Webrat相比很脆弱。。。这似乎是相当一致的

正如Chris Rueber所说,实际上没有任何支持JS的无头DOM解释器——目前它正在为您的自动化启动一个web浏览器,或者在javascript本身中编写单元测试(这也不是真正的集成测试)


当您有很多由selenium webdriver支持的测试时,它们有时可能需要一段时间才能运行,但这肯定比根本没有测试要好。

如果您不喜欢selenium,您可以使用一些宝贵的东西

我推荐的是茉莉花:


您还可以查看Culerity

我最近工作的一位JavaScript专家指出,这是一个有趣的工具,可用于测试大量使用JavaScript的web应用程序。我们还没有尝试过,但是一个用于DOM测试的无头WebKit的想法听起来很有希望。

查看gem jasminerice来测试您的js逻辑

对于集成测试,我建议使用rspec和capybara作为验收测试。区分请求规范和验收规范! 另一种可能性是用萝卜代替黄瓜

为了加速你的测试,测试无头。您可以使用水豚webkit(取决于qt)或poltergeist(取决于phantomjs)。
两者都很容易设置。我更喜欢恶鬼。

好消息。我们也在使用ExtJS。。。与我目前的发现相匹配。对于ExtJS UI测试,请尝试。含硒的水豚似乎是最好的选择。