大佬教程收集整理的这篇文章主要介绍了angularjs – Karma jasmine angular ui router – 使用params测试state.go的解析,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
$stateProvider .state('stateB',{ parent: 'stateA',abstract: true,templateUrl : baseUrl+'/templates/stateB.html' }) .state('stateB.details',{ url: '/stateB/details/:param1/:param2',resolve : { value3 : ['$localStorage','$stateParams',function($localStorage,$stateParams){ return $localStorage.value3[$stateParams.param1]; }] },views : { 'view1' : { templateUrl : baseUrl+'/templates/view1.html',controller: 'View1Ctrl' },'view2' : { templateUrl : baseUrl+'/templates/view2.html',controller : 'View2Ctrl' } } })
我想为“解决”编写单元测试,这是我的茉莉花单元测试.
var rootScope,state,injector,mockLocalStorage,httpBACkend; beforeEach(module('moduleB')); beforeEach(inject(function($rootScope,$state,$injector,$localStorage,$httpBACkend) { rootScope = $rootScope; state = $state; injector = $injector; httpBACkend = $httpBACkend; mockLocalStorage = $localStorage; })); it('should should resolve the data',function() { mockLocalStorage.value3 = {}; mockLocalStorage.value3["1234567890"] = 'resolved-data'; state.go('stateB.details',{ "param1" : "1234567890","param2" : true }); rootScope.$digest(); console.log('state',statE); expect(state.current.Name).toBe('stateB.details'); expect(injector.invoke(state.current.resolve.value3)).toBe('resolved-data'); });
1)console.log(‘state’,statE)==>版画
‘state’,Object {params:Object {},current:Object @R_675_9111@:”,……..}
2)expect(state.current.Name).toBe(‘stateB.details’)==>失败,错误
期待”成为’stateB.details’.
3)期待解决==>失败,错误
TypeError:’undefined’不是对象(评估’state.current.resolve.value3′)
任何人都可以帮助指出我错过了什么?
更新:
我修改了我的测试,在promise的成功块中有断言.
即使断言是假的,它也会通过测试.
it('should resolve the data',"param2" : true }).then(function() { console.log('state',statE); expect(state.current.Name).toBe('stateB.details'); expect(injector.invoke(state.current.resolve.value3)).toBe('resolved-data2'); });; });
此测试通过,并且没有显示“console.log(‘state’,statE);” .
而且,我对“已解决的数据2”的断言应该失败,因为期望的值是“已解析数据”.
1)导入模块
beforeEach(module('stateA')); beforeEach(module('stateB')); beforeEach(module('ui.router'));
2)
beforeEach(module( function($providE) { $provide.value('$localStorage',mockStorage = { value3: []}); $provide.value('$stateParams',stateParams = { param1: 1234,param2: "true"}); }));
3)单元测试:
it('should go to stateB.details state and resolve the data',function() { mockStorage.asseTinfo[stateParams.value3] = 'resolved-data'; var s = state.get('stateB.details'); expect(injector.invoke(s.resolve.value3)).toEqual('resolved-data'); });
以上是大佬教程为你收集整理的angularjs – Karma jasmine angular ui router – 使用params测试state.go的解析全部内容,希望文章能够帮你解决angularjs – Karma jasmine angular ui router – 使用params测试state.go的解析所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。