2017-08-04 31 views
0

我是單元測試的新手。我試圖單元測試,如果條件下面的代碼:IF條件下的角度2單元測試

hide() { 
     this.count --; 
     if (this.count === 0) { 
      this.loaderIs = false; 
     } 
    } 

我想對loaderIs變量使用間諜功能。

it('hide function check',() => { 
     expect(loaderService.hide).toBeDefined(); 
     spyOn(loaderService, 'loaderIs'); 
     loaderService.hide(); 
     expect(loaderService.loaderIs).toHaveBeenCalled(); 
    }); 

任何輸入和指南的高度讚賞。

回答

0

事情是,你不應該模擬你正在測試的單元。 (在你的情況下,它是hide方法)。調用hide方法應調用實際方法。請參閱下面的代碼

describe('Some test: ',() => { 
    beforeEach(() => { 
     loaderService.loaderIs = false; 
     // ... 
    }); 

    it('loaderIs should be falsy',() => { 
     loaderService.count = 1 
     loaderService.hide(); 
     expect(loaderService.loaderIs).toBeFalsy(); 
    }); 

    it('loaderIs should be truthy',() => { 
     loaderService.count = 2 
     loaderService.hide(); 
     expect(loaderService.loaderIs).toBeTruthy(); 
    }); 
});