簡體   English   中英

單元測試 Angular Jasmine Karma

[英]Unit testing Angular Jasmine Karma

我正在學習單元測試並且我已經

   @Input() showSearchTab: Boolean = false;
     @Input() currentTab: string = null;

     ngOnInit(): void {
        if (this.showSearchTab) {
          this.currentTab = 'search';
        }
      }

這是單元測試:

describe('ngOnInit()', () => { 
        it('should set all the defaults', () => {
          specManager.component.ngOnInit();
          expect(specManager.component.currentTab).toBe('search');
        });
    });

我收到一個錯誤,預計 null 為“搜索”

根據您在ngOnInit函數中的邏輯,如果showSearchTabtruecurrentTab將具有值search

因此,在您的測試用例中調用specManager.component.ngOnInit()之前,設置specManager.component.currentTab = true;

在您的組件測試之后,在測試達到預期的那一刻,showSearchTab 設置為 false,因此它不會通過 if 條件。 要獲得經過全面測試的場景,您應該執行以下操作:

describe('ngOnInit()', () => {
    describe('and showSearchTab is set to false', () => {
        it('should set all the defaults', () => {
            specManager.component.showSearchTab = false;
            specManager.component.ngOnInit();
            expect(specManager.component.currentTab).toBeNull();
        });
    });

    describe('and showSearchTab is set to true', () => {
        it('should set all the defaults', () => {
            specManager.component.showSearchTab = true;
            specManager.component.ngOnInit();
            expect(specManager.component.currentTab).toEqual('search');
        });
    });
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM