【问题标题】:Can I test regular XMLHttpRequests with Angular's $httpBackend?我可以使用 Angular 的 $httpBackend 测试常规 XMLHttpRequests 吗?
【发布时间】:2014-01-31 13:18:45
【问题描述】:

我有一个 AngularJS 应用程序,需要上传文件,由于 $http 不支持 XMLHttpRequest.upload 的特殊功能,我必须使用 XMLHttpRequest 执行文件上传。

我的问题是:我可以使用$httpBackend 对通过new XMLHttpRequest() 发出的请求进行单元测试吗?

我做了一些测试,但目前$httpBackend 正在抛出错误。没有调用$httpBackend.flush(),它抱怨请求不满足,但添加flush,只会导致“没有待处理的请求”错误。

大量使用搜索引擎并没有为我提供答案,您能帮帮我吗?

【问题讨论】:

    标签: javascript unit-testing angularjs file-upload xmlhttprequest-level2


    【解决方案1】:

    我怀疑不是,但如果你稍微重构它,你仍然可以对你的代码进行单元测试:

    • 创建一个返回new $window.XMLHttpRequest()的小型工厂。

    • 然后在服务/控制器中,不要直接调用new XMLHttpRequest(),而是在需要调用upload()时注入这个工厂

    • 您可以通过模拟工厂并在测试前将其注入来对服务/控制器进行单元测试。

    • 您甚至可以通过使用 XMLHttpRequest 构造函数模拟 $window 并在测试之前将其注入来对小工厂进行单元测试。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多