zoukankan      html  css  js  c++  java
  • [Unit Testing] Angular Unit Testing, ui-router, httpbackend and spy

    // backend test
    
            beforeEach(inject(function (_$compile_, _$httpBackend_, _$rootScope_, _$state_, _AnnouncementsService_, _CONFIG_) {
                compile = _$compile_;
                $httpBackend = _$httpBackend_;
                $scope = _$rootScope_.$new();
    
                AnnouncementsService = _AnnouncementsService_;
                CONFIG = _CONFIG_;
    
                // Need to mock $state, so the ui-router resolve wont conflict with tests.
                state = _$state_;
                spyOn( state, 'go');
                spyOn( state, 'transitionTo');
    
                directiveElem = getCompiledElement();
                directiveCtrl = directiveElem.controller('comAnnouncements');
            }));
    
            afterEach(function() {
                $httpBackend.verifyNoOutstandingExpectation();
                $httpBackend.verifyNoOutstandingRequest();
            });
            
            it('should respond 200 to a http get request and get 1 announcement', function(){
                AnnouncementsService.getAnnouncementData(2);
    
                let expectedResponse = [
                    {
                        "id": 0,
                        "title": "Maintenance work may affect Internet services 20/09/2015",
                        "date": "11 Nov 2015 | 12:30 PM"
                    }
                ];
    
                $httpBackend.expectGET(CONFIG.BACKEND_API_URL + '/announcements/2').respond(200, { 'announcements': expectedResponse });
                $httpBackend.flush();
                expect(AnnouncementsService.announcementData).toEqual(expectedResponse);
            });
            
            
    // ui-router test
    
            it('Should move to "home state"', () => {
                $scope.$apply(() => {
                    angular.element(directiveElem.find('a')[0]).click();
                    $timeout.flush();
                });
    
                expect($state.current.name).toEqual('selfcare.home');
            });
    
            it('$state href should equal "/home"', () => {
                $scope.$apply(() => {
                    $state.go('selfcare.home');
                });
                expect($state.current.name).toEqual('selfcare.home');
                expect($state.href('selfcare.home')).toEqual('/home');
            });    
    
    // Click to expect function to be called
    
            it('should call goToSearch()', function(){
                spyOn(directiveCtrl, 'goToSearch');
                angular.element(directiveElem.find('.header-icon-menu i')[0]).click();
                expect(directiveCtrl.goToSearch).toHaveBeenCalled();
            });    
  • 相关阅读:
    富文本
    frame,bounds,position,anchorPoint理解
    内存相关
    OpenGL
    Xcode 编译选项详解
    iOS 工程引用
    iOS 事件传递和消息处理
    UICollectionView用法
    数据库
    多线程
  • 原文地址:https://www.cnblogs.com/Answer1215/p/5037882.html
Copyright © 2011-2022 走看看