5

我正在使用 BackboneJS 和 RequireJS 构建一个 Web 应用程序,并且需要为通过 AJAX 的 UI 交互和数据检索实现某种形式的单元测试。我遇到过QUnitJasmine,但我真的不知道如何将它集成到我的应用程序中。

如果我正在测试以下内容:

  • 用户登录正常吗?
  • 是否从服务器接收到数据正常?
  • 单击按钮会触发预期的响应吗?
  • 点击事件是否适用于动态加载的 html 内容?
  • 应用程序是否正确响应哈希/推送状态 url 的变化?

我想测试必须直接集成到我的应用程序中,以便访问特定的 JS 对象、处理特定于会话的数据并响应推送状态 URL 的变化。

如何将 QUnit 或 Jasmine(或其他建议)集成到我的模块化应用程序中以对这些功能进行单元测试?

4

3 回答 3

4

单元测试真的很简单。

您制作了一个测试 HTML 页面。您包括 QUnit/NodeUnit/Jasmine/TestLibraryOfChoice

然后,您使用 requireJS 并加载您的 javascript 模块之一,

您只需测试导出的对象或函数。这意味着测试模块的有效输入并断言输出是正确的。

您可能必须模拟 ajax 并编写 HTML 模拟

于 2011-11-21T13:10:12.910 回答
2

Dojo Objective Harness (DOH)是一个非常好的单元测试框架,它与浏览器无关并支持测试异步功能,请参阅此处获取演练指南。

但是,从您的测试用例看来,您想要的更像是集成测试?如果是这样,Selenium是一个很好的浏览器自动化工具。

至关重要的是,这些工具都不需要您修改代码(除非您发现错误:))

于 2011-11-21T12:52:53.137 回答
1

如果您想查看使用 QUnit 对基于 requireJS 的模块进行单元测试的示例,请在http://boilerplatejs.org下载 javascript 参考架构。

免责声明:我是它的主要作者。

于 2012-08-21T01:42:30.043 回答