【问题标题】:Javascript Unit Testing Full StackJavascript 单元测试全栈
【发布时间】:2012-05-22 01:52:13
【问题描述】:

我们正在寻找一个 Javascript 测试框架,它可以在整个应用程序堆栈、客户端和服务器上执行测试。我们在客户端使用 jQuery、RequireJS 和 Backbone.js,在服务器上使用 Node.js 和 express。

Node.js 应该通过使用相同的语言(以及其他目标)为客户端和服务器端开发提供更相似的设置来简化创建 Web 应用程序。但是,我发现很难进行单元测试并想出一套可在客户端和服务器上运行的一致技术。

目前,我们在客户端使用 QUnit 进行测试,在服务器上使用 Expresso 和 Should.js。它们具有完全不同的接口,这使得测试客户端和服务器之间共享的代码变得非常困难。例如,考虑一个进行验证的模块,客户端和服务器都需要访问它,并且都需要在所有客户端和服务器上进行单元测试。

本质上,我正在寻找一个圣杯,它允许我们以类似于使用 python 和 ruby​​ 等语言开发客户端-服务器应用程序的方式开发 Web 应用程序。

【问题讨论】:

  • 我认为目前还没有一致的标准来处理客户端和服务器端的模块。 AMD 用于异步模块声明(在客户端使用),然后是 node.js 中的模块使用 commonjs 中建议的实现
  • @badunk 你是对的,这也是一个问题。但是,现在可以在服务器端使用 RequireJS。我们还没有这样做。 Node.js 使用同步需求。这里有一个名为 require.ensure() 的异步提案:wiki.commonjs.org/wiki/Modules/Async/A.RequireJS 在您习惯后非常简单,并且它的作者确实致力于使其变得更好。
  • @yaudaev 好样的!感谢您的提示;)

标签: javascript unit-testing node.js web-application-design


【解决方案1】:

听起来您正在寻找类似BusterJS 的东西,它具有服务器端和客户端组件。您将对每个部分进行一组单独的测试,但语法将保持一致。您只需在 buster.js 配置中指定您的环境,如下所示:

env: "browser", // or "node"

这是目前所有可用框架中我最喜欢的选择。

【讨论】:

  • 这看起来是一个很棒的工具。我一定会去看看的。
  • 谢谢埃里克。它看起来有点年轻,但希望到本月底他们实际上会得到一个稳定的 1.0 版本。我喜欢他们的想法:)。只是想确保我们可以相信测试结果不会返回误报或崩溃。您所说的“您将对每个部分进行一组单独的测试”是什么意思?为什么?
  • @yagudaev 我的意思是你有一组测试配置为在“浏览器”模式下运行,另一组测试在“节点”模式下使用 require 等运行。作为成熟,我从 0.5.1 开始就没有任何问题,我正在将它用于生产应用程序。
  • 现在观看网站上的视频,buster 真的很棒。它确实做了我一直在寻找的所有东西:)。我会接受这个答案,只是为了完整性,我会很高兴获得更多替代方案。
猜你喜欢
  • 1970-01-01
  • 2023-03-15
  • 2015-06-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-15
  • 1970-01-01
相关资源
最近更新 更多