AngularJS单元测试不依赖于请求数据的mock



我终于设置好了AngularJS测试环境,我正在尝试测试应用程序上的页面是否正常工作。这包括模板路由请求指令等等

根据我的发现,当测试一个正在运行的应用程序时,大部分工作都需要mock。虽然这很好,但我仍然想测试应用程序中的实际模板和数据。

每当在我的应用程序中进行GET调用时,我都会收到一个错误,看起来像:

Unexpected request: GET application/templates/home.html
No more request expected
Error: Unexpected request: GET application/templates/home.html

结果发现它无法正确下载请求。这很好。据我所知,测试运行程序(testtacular)无法下载模板文件,因为它位于不同的环境中(没有提供HTTP地址)。关于如何解决这个问题,我遇到的唯一解决方案是使用$httpBackend服务使用mock来存根请求。虽然这在某些情况下很有用,但我想获取实际数据。

你知道怎么解决这个问题吗?

您可能想要编写两种不同类型的测试:

  1. 使用mock进行单元测试,以隔离测试组件,如控制器、指令等
  2. 运行完整堆栈的e2e测试,包括来自您自己服务器的数据

这两种测试都需要单独的测试配置。

Angular提供了导航测试浏览器和与应用程序交互的支持,就像用户一样。此处记录了解释和API:http://docs.angularjs.org/guide/dev_guide.e2e-testing

我的测试e2e配置和解释发布在这里:https://stackoverflow.com/a/13410567/1739247

在您自己的服务器上运行测试的重要部分是proxies,正如在那篇文章中所解释的那样。

最新更新