2017-05-09 1 views
0

모카/차이/사이먼을 사용하여 내 기록 수업에서 아래의 방법을 테스트하고 싶습니다. 어떻게해야합니까?Mocha/Chai/Sinon을 사용하여 NodeJS fs를 테스트하는 방법은 무엇입니까?

/** 
* Load the history from the history file. 
* @return {this} 
*/ 
load() { 
    const file = historyFilePath(); 

    if (!fs.existsSync(file)) { 
    return this; 
    } 

    const json = fs.readFileSync(file, 'utf8'); 
    const data = JSON.parse(json); 

    this.ary = data; 

    return this; 
} 

전체 클래스는 here입니다.

나는 재선에 따라 answer에 주목했지만 여분의 의존성을 피하고 재 와이어도 바벨과 호환되지 않습니다.

+1

Sinon ['stubs'] (http://sinonjs.org/releases/v2.2.0/stubs/)을 사용할 수 있습니다. – robertklep

+0

@robertklep 나는 그것을 깨달았지만, 나는 그것을 작동시킬 수 없다. – maasha

+0

작동하지 않는 코드를 공유하면 사람들이 쉽게 도움을받을 수 있습니다. – robertklep

답변

0

한 가지 방법은 HistoryFile이 항상 동일한 구조를 가지고 있다고 가정하면 올바른 속성을 가진 객체를 가져 오는 지 테스트하는 것입니다.

예를 들어 당신의 역사 JSON 파일이

{ 
    "History": { 
     "Name": "Test" 
    } 
} 

당신이처럼 모카를 작성할 수 좋아하면 :

it('should return a correct object', function() { 
    const loadedObject = historyUtil.load(); 

    expect(loadedObject).to.have.property("History"); 
    expect(loadedObject.History).to.have.property("Name","Test"); 
} 

이 테스트가 실패 할 경우 :

  1. FS 수 파일을 찾거나 읽지 않습니다.
  2. JSON.parse는 파사를 얻지 못합니다. 문자열 예 :
  3. HistoryFile 스키마가 변경됩니다 (예 : 버전 변경.
+1

맞아,하지만 fs를 스텁하고 싶습니다. 파일 시스템에 액세스 할 수 없거나 느린 원격 연결을 통해 테스트 할 수있는 적절한 방법입니다. – maasha

관련 문제