Testing AngularJS单元测试,不依赖于请求数据的模拟

Testing AngularJS单元测试,不依赖于请求数据的模拟,testing,angularjs,Testing,Angularjs,我终于完成了AngularJS测试环境的设置,我正在尝试测试应用程序上的页面是否正常工作。这包括模板,路由,请求,指令等等 据我所知,当测试一个工作的应用程序时,大多数工作都需要模拟。虽然这很好,但我仍然希望测试我的应用程序中的实际模板和数据 每当在我的应用程序中进行GET调用时,我都会收到如下错误: Unexpected request: GET application/templates/home.html No more request expected Error: Unexpected

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

据我所知,当测试一个工作的应用程序时,大多数工作都需要模拟。虽然这很好,但我仍然希望测试我的应用程序中的实际模板和数据

每当在我的应用程序中进行GET调用时,我都会收到如下错误:

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


您知道如何解决这个问题吗?

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

  • 使用mock进行单元测试,以隔离测试组件,例如控制器、指令等
  • 运行完整堆栈的e2e测试,包括来自您自己服务器的数据
  • 这两种测试都需要单独的测试配置

    Angular支持用户导航测试浏览器并与应用程序交互。此处记录了解释和API:

    我的测试e2e配置和说明发布在这里:


    针对您自己的服务器运行测试的重要部分是
    代理
    ,如那篇文章所述

    我已经看了这两个测试,并同意Angular的方法,即在单元测试和e2e测试之间有一个明确的区别。然而,我想进一步测试控制器和服务,即使它们的XHR请求确实查询了实际的网站。有没有办法不用模拟就可以解决这个问题?谢谢你的精彩回复(顺便说一句:)再看一遍,我怀疑这与$http是异步的,测试是同步的有关。如果您尝试编写异步测试,可能会有所帮助?你能为你的问题添加一些示例代码吗?谢谢