Angularjs   发布时间:2022-04-20  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了angularjs – Karma jasmine angular ui router – 使用params测试state.go的解析大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我的角度模块“moduleB”中的状态定义如下

$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”的断言应该失败,因为期望的值是“已解析数据”.

@H_944_37@解决方法
最后,我解决了这个问题.这是任何感兴趣的人的解决方案.

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,请注明来意。