1

我有一个包含项目资源的模块,代码如下所示:

editor_services.js

var editorServices = angular.module('editorServices', ['ngResource']);
editorServices.factory('Project', ['$resource', '$http',function($resource, $http){ 
//...etc

现在我想为期望项目资源作为参数的控制器编写测试。如何从editorServices变量中获取该工厂创建的项目资源的实例?

4

1 回答 1

7

这是一个工作示例如何以角度 http://plnkr.co/edit/kK5fDFIVpyZTInH1c6Vh?p=preview测试资源(或 http)

基本设置是:

  1. angular-mocks.js在你的测试中加载。这将替换为$httpBackend模拟版本。请参阅:http : //docs.angularjs.org/api/ngMock .$httpBackend

  2. 在您的测试调用$httpBackend.expect()中创建期望被模拟出来。

  3. 当你想模拟服务器响应调用时$httpBackend.flush()

  4. 有一个警告,.toEqual()茉莉花的正常情况无法使用,$resource因此您必须像这样创建自定义匹配器:

  之前(函数(){
    this.addMatchers({
      // 我们需要使用 toEqualData 因为 Resource 有额外的属性
      // 这使得简单的 .toEqual 不起作用。
      toEqualData:函数(期望){
        返回 angular.equals(expect, this.actual);
      }
    });
  });
于 2013-05-10T16:44:21.013 回答