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

时间:2012-11-21 18:25:24

标签: testing angularjs

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

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

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

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

原来它无法正确下载请求。哪个好。根据我的想法,测试运行器(testacular)无法下载模板文件,因为它在一起的不同环境中(没有提供HTTP地址)。我遇到的唯一解决方法是使用$ httpBackend服务使用模拟来存根请求。虽然这对某些情况很有用,但我想获取实际数据。

有关如何解决这个问题的想法吗?

1 个答案:

答案 0 :(得分:3)

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

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

    Angular支持导航测试浏览器并与用户进行交互。此处说明了解释和API:http://docs.angularjs.org/guide/dev_guide.e2e-testing

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

    对于您自己的服务器运行测试的重要部分是proxies,如该帖子中所述。