• [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();
            });    
  • 相关阅读:
    一段代码让你了解匿名函数的来龙去脉
    橡皮擦背景色橡皮擦魔术橡皮擦
    flv播放器
    测试面试题01
    java中堆和栈的区别
    经典javaThead 生产者 消费者
    判断一个点是否在三个点组成的三角形内 java 代码 面试经典
    软件项目管理面试题
    java中的位运算
    真正的JDBC java代码
  • 原文地址:https://www.cnblogs.com/Answer1215/p/5037882.html
Copyright © 2020-2023  润新知