5

我目前正在开发一个单页 javascript 应用程序,在服务器端使用 Sinatra Ruby,在客户端使用 Backbone.js、jQuery、jQuery UI。该应用程序的主要目的是允许客户查看/编辑不同类型的项目,每个项目视图都是或多或少复杂的表单。

为了确保一切正常,我打算这样做:

  • 使用 QUnit 的单一测试
  • 功能/集成测试

在这种情况下,您推荐哪些框架/工具用于集成测试?我从 Selenium 开始,但我不太喜欢它。我刚开始研究 PhantomJS 和 CasperJS,它们对于导航、点击链接、...

你有什么建议?

4

1 回答 1

1

您没有说您不喜欢 Selenium 的哪些方面,但我猜您对 JavaScript 很有信心,所以我的建议是使用CasperJS作为主要工具。它确实适用于单页网络应用程序,并带有自己的测试工具。wait使用嵌套子句时,代码有时仍会有些复杂;通过确保您在每个测试中不要尝试做太多事情来解决这个问题,然后如果仍然很复杂,请重构。并且不要忘记为测试而设计:如果您的选择器非常复杂,请考虑<span id="xxxx">...</span>在它周围添加一个,这样您的测试就可以直接进入它!

您可以将 CasperJS 与PhantomJSSlimerJS一起使用。我目前更喜欢 SlimerJS,因为:

  • PhantomJS 1.x 停留在旧的 WebKit(相当于 Safari 5.1 和 Chrome 13)上,因此测试任何更现代的功能都令人沮丧。
  • SlimerJS 可以与 Gecko 引擎一起使用,也可以直接与您安装的 Firefox 版本一起使用。这允许您使用额外的插件、安全证书等配置 Firefox 配置文件。
  • SlimerJS 是用 JavaScript 编写的,因此如果您有需要,更容易破解。

一旦 PhantomJS 2.0 发布(希望在 2013 年底左右),或者如果您的网站不依赖任何最新的 HTML5 API,您可以运行 CasperJS 两次,以获得双重覆盖。(顺便说一句,PhantomJS 自然是无头的;SlimerJS 需要使用Xvfb,仅适用于 Linux 或 Mac。)

Selenium为您提供的额外功能是您可以控制其他浏览器,尤其是 IE。(当然,对于 IE,您需要运行 Windows 机器。)Selenium 和 SlimerJS 一样,需要 Xvfb 是无头的(同样,不包括 Windows)。(顺便说一句,支持的浏览器上的 Selenium 文档已经很久没有更新了,但我假设每个浏览器的更高版本至少有相同的支持。)

于 2013-10-31T01:36:09.317 回答