大佬教程收集整理的这篇文章主要介绍了angularjs – 使用默认承诺进行角度/茉莉花测试,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
这是我的规范代码.
describe('Controller Tests',function(){ var scope,searchAPI; beforeEach(function(){ var mockSearchAPI = {}; module('myApp',function($providE){ $provide.value('searchAPI',mockSearchAPI); }); }); inject(function($q){ var testData = {"message":"hi"}; mockSearchAPI.executeSearch = function(){ var defer = $q.defer(); defer.resolve(testData); return defer.promise; }; }); beforeEach('Main Search Controller Tests',function(){ function($controller,$rootScope,_searchAPI_){ scope = $rootScope.$new(); searchAPI = _searchAPI_; $controller('MainSearchCtrl',function(){ $scope: scope,searchAPI: searchAPI }); scope.$digest(); } }); it('should return a promise correctly',function(){ var field = "testfield"; var value = "testvalue"; var pagenumber = 1; var promise = scope.processQueryByField(field,value,pagenumber); //THIS LINE IS GIVING ME '{}' alert(promisE); }); });
我不确定为什么我“警告”的行给了我'{}’的输出.它不应该是我在注入函数中定义为“testData”的数据结构吗?我不确定这里发生了什么.我尝试了很多解决方案.
我的控制器代码基本上是服务的包装器
$scope.processQueryByField = function(field,pagenumber){ return searchAPI.executeSearch(field,pagenumber); }
我不应该只接收我在进样器代码中定义的值吗?
例:-
更改您的模拟以简化: –
inject(function($q){ var testData = {"message":"hi"}; mockSearchAPI.executeSearch = function(){ return $q.when(testData); }; });
只是为了演示我在你的控制器中添加了另一个解决了数据的方法: –
.controller('MainSearchCtrl',['$scope','searchAPI',function ($scope,searchAPI) { //At this point placing this method on scope is uSELEss $scope.processQueryByField = function(field,pagenumber){ return searchAPI.executeSearch(field,pagenumber); } //This when invoked will update the searchResults in the model. $scope.populateData = function(){ $scope.processQueryByField(1,1,1).then(function(data){ $scope.searchResults = data; }) } }]);
期望#1: – 测试在调用方法时是否使用预期参数调用api方法.
it('should invoke execute search',function(){ //Set up a spy on your mock api method spyOn(mockSearchAPI,'executeSearch'); var field = "testfield"; var value = "testvalue"; var pagenumber = 1; scope.processQueryByField(field,pagenumber); //invoke scope method with args //Test if the mock api method has been called expect(mockSearchAPI.executeSearch).toHaveBeenCalled(); //test if it has been called with expected arguments. expect(mockSearchAPI.executeSearch).toHaveBeenCalledWith(field,pagenumber); });
期望#2: – 在解决承诺时测试数据是否正确填充.
it('should return a promise correctly',function(){ var field = "testfield"; var value = "testvalue"; var pagenumber = 1; var promise = scope.processQueryByField(field,pagenumber); //This is a uSELEss expectation expect(promisE).toBeDefined(); scope.populateData(); $rootScope.$digest(); //<-- Apply digest cycle,so the promise is resolved expect(scope.searchResults).toBeDefined(); expect(scope.searchResults.messagE).toEqual("hi"); });
以上是大佬教程为你收集整理的angularjs – 使用默认承诺进行角度/茉莉花测试全部内容,希望文章能够帮你解决angularjs – 使用默认承诺进行角度/茉莉花测试所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。