2015-12-22 189 views
0

模擬對象的服務是否可行?模擬cfg.user.core.token的值是否可行?林嘲笑httpBackend這樣的:茉莉花模擬對象在測試

$httpBackend.when("GET","/check/").respond({ 
       data: ['success'] 
       }); 

這是我的代碼:

.service("session", function ($window, $location, $http, cfg) { 
     var service = {}; 
     service.check = function() { 
      $http.get("/chceck/" + cfg.user.core.token).then(function (response) { 
       if (response.data && response.data.success !== true) { 
        service.logout(); 
       } 
      }); 
     }; 
    return service; 
}) 

我的測試的一部分:

it("check ", function() { 
    spyOn(session, 'check').and.callThrough(); 
    session.check(); 
    expect(session.check).toHaveBeenCalled(); 
    $httpBackend.flush(); 
    }); 

回答

0

假設cfg是角常數:

angular.module('mymodule') 
    .constant('cfg', { 
    user: { 
     core: { 
     token: 'token' 
     } 
    } 
    }); 

所以在茉莉花考驗你可以存根此常數:

describe('mytest', function() { 
    var 
    cfgStub = { 
     user: { 
     core: { 
      token: 'stubToken' 
     } 
     } 
    }; 

    beforeEach(module('mymodule')); 

    beforeEach(module(function($provide) { 
    $provide.constant('cfg', cfgStub); 
    })); 

    ... 
}); 

並使用cfgStub無論你在測試中想要的。

+0

非常感謝!這很有幫助 – john51