我有一个包含项目资源的模块,代码如下:
editor_services.js
var editorServices = angular.module('editorServices', ['ngResource']);
editorServices.factory('Project', ['$resource', '$http',function($resource, $http){
//...etc
现在我想为期望项目资源作为参数的控制器编写测试。如何从editorServices
变量中获取此工厂创建的项目资源实例?
答案 0 :(得分:7)
这是一个工作示例,如何以角度测试资源(或http) http://plnkr.co/edit/kK5fDFIVpyZTInH1c6Vh?p=preview
基本设置是:
在您的测试中加载angular-mocks.js
。这将用模拟版本替换$httpBackend
。请参阅:http://docs.angularjs.org/api/ngMock。$ httpBackend
在您的测试通话$httpBackend.expect()
中创建期望被嘲笑。
如果要模拟服务器响应调用$httpBackend.flush()
有一点需要注意,茉莉花的正常.toEqual()
不能与$resource
一起使用,所以你必须像这样创建自定义匹配器:
beforeEach(function() { this.addMatchers({ // we need to use toEqualData because the Resource hase extra properties // which make simple .toEqual not work. toEqualData: function(expect) { return angular.equals(expect, this.actual); } }); });