2017-05-09 6 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" 
    } 
} 

をご希望の場合は、このようなあなたのモカを書くことができますすることができます

  1. FS:このテストでは、場合に失敗しなければならない

    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"); 
    } 
    

    ファイルを検索/読み込みません。

  2. JSON.parseはパーサを取得しません文字列
  3. HistoryFileスキーマが変更されます。バージョンの変更。
+1

右ですが、ファイルシステムにアクセスできない場合や低速のリモート接続でテストする適切な方法であるfsをスタブしたいと思います。 – maasha

関連する問題