这是我的服务:
var services = angular.module('amdotcom.services',['ngResource']); services.factory('homePageRes',['$resource','$window',function ($resource,$window) { var wdw = angular.element($window); return $resource('home/index',{ height: wdw.height(),width: wdw.width() }); }]); services.factory('homePageLoader',['homePageRes','$q',function (homePageRes,$q) { return function () { var delay = $q.defer(); homePageRes.get(function (homePage) { delay.resolve(homePage); },function () { delay.reject('Unable to fetch home page'); }); return delay.promise; }; }]);
以下是我在介绍$window服务之前的测试.这些测试工作正常,但是一旦我介绍$window服务,我就无法嘲笑它.
describe('Services',function () { beforeEach(function () { module("amdotcom.services"); }); describe('homePageLoader',function () { var mockBackend,loader; beforeEach(inject(function ($httpBackend,homePageLoader) { mockBackend = $httpBackend; loader = homePageLoader; })); it('should return home page information',function () { mockBackend.expectGET('home/index?height=400&width=500').respond({ "Albums": [{ "Id": 2,"Name": "best shots" }] }); var homePageData; var promise = loader(); promise.then(function (homePg) { homePageData = homePg; }); expect(homePageData).toBeUndefined(); mockBackend.flush(); expect(homePageData.Albums[0].Id).toEqual(2); expect(homePageData.Albums[0].Name).toEqual("best shots"); }); afterEach(function () { mockBackend.verifyNoOutstandingExpectation(); mockBackend.verifyNoOutstandingRequest(); }); }); });
我收到错误说:TypeError:’undefined’不是函数(评估’wdw.height()’)
我尝试使用$provider和spyOn方法,但没有一个工作.请帮忙.
阿伦
显然,height()和width()函数不正确.我将它们更改为innerHeight和innerWidth属性.
services.factory('homePageRes',$window) { return $resource('home/index',{ height: $window.innerHeight,width: $window.innerWidth }); }]); beforeEach(function () { angular.mock.module("amdotcom.services",function ($provide) { var myMock = { innerHeight: 400,innerWidth: 500 }; $provide.value('$window',myMock); }); });
原文地址:https://www.jb51.cc/windows/363449.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。