• [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();
            });    
  • 相关阅读:
    CSS 内外边距
    CSS 边框
    android chrome this account already exists on your device
    linux s s r client ubuntu kali
    rEFInd 美化 windows
    sogou opensuse
    Ping 虚拟机 超时
    python3 批量自动下载对应用户 github上的项目 或者 starts 的项目
    materialize 样例
    opensuse input methods
  • 原文地址:https://www.cnblogs.com/Answer1215/p/5037882.html
Copyright © 2020-2023  润新知