2017-09-21 3 views
0

,이 클래스 : 재스민의다른 방법을 호출하지 않고 jasmine과 test method에서 단위 테스트를 작성하는 방법은 무엇입니까? 예를 들어

export class List<T> { 
    private _count: number; 
    private _items: Array<T>; 

    constructor() { 
     this._count = 0; 
     this._items = []; 
    } 

    get(index: number) { 
     return this._items[index]; 
    } 

    add(item: T) { 
     this._items[this._count] = item; 
     this._count++; 
    } 
} 

이 단위 테스트 :

import { List } from './list'; 

describe('List',() => { 

    let testList: List<string>; 

    beforeEach(() => { 
     testList = new List<string>(); 
    }); 

    it('get() method works',() => { 
     //how to test get() method without calling add() method? 
     testList.add("string1"); 
     testList.add("string2"); 
     testList.add("string3"); 

     let s1: string = testList.get(0); 
     let s2: string = testList.get(1); 
     let s3: string = testList.get(2); 

     expect(s1).toBe("string1"); 
     expect(s2).toBe("string2"); 
     expect(s3).toBe("string3"); 
    }); 
} 

내 생각이 아니다 단위 테스트하지만, 통합 테스트, 그래서 얼마나 잘 단위 테스트를 작성? 나는 모의를 본다. 그러나 나는이 경우 그것을 사용하는 방법을 모른다.

답변

1

첫 번째 옵션으로 메소드를 테스트하기 전에 상태를 수정할 수 있습니다. 즉, 항목을 추가하기 전에 목록이 비어 있으면 수표를 추가합니다. 두 번째 옵션으로 초기 항목이있는 생성자를 추가하고 항목이있는 빈 생성자 및 생성자에 대한 테스트를 추가 할 수 있습니다. 그런 다음 메서드를 추가하지 않고 테스트를 다시 수행 할 수 있습니다.

하지만 나는 그렇게 중요하지 않다고 생각합니다. 어쨌든 다른 방법을 호출 할 것이기 때문입니다. 단위 테스트는 HTTP, 데이터베이스 등과 같은 다른 구성 요소로부터 격리시키는 것을 제안합니다.