0

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

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

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

广泛使用搜索引擎并没有为我提供答案,所以你能帮我吗?

4

1 回答 1

0

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

  • 创建一个返回new $window.XMLHttpRequest().

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

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

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

于 2014-01-12T22:45:58.743 回答