2017-08-23 18 views
6

基本的に私は、ファイル角度カルマジャスミン - テスト機能

describe('get data from file', function() {    

    it('should read the files from the data', function() { 
     var syncFile = 'somefile.txt'; 

     expect().toBe(); 
    }); 
}); 
を読み取るため

$window.resolveLocalFileSystemURL(cordova.file.dataDirectory, function (dir) { 
    var path = 'somefile.txt';      
    dir.getFile(path, { create: true }, function (file) { 
     file.file(function (file) { 
      var reader = new FileReader(); 
      reader.onloadend = function() {        
       resolve(this.result); 
      } 
      reader.readAsText(file); 
     }); 
    }, error); 
}, error); 

iはユニットテストケースを書くことにこだわっているテキストファイルから読んでいる機能、下にこれをテストする必要があります

filereaderのファイルを読み取るための単体テストの書き方は? PS:私はカルマを使ってユニットテストをしていません

答えて

7

FileReaderは直接使用しないでください。その行を

​​3210

に変更します。テストでは、$ windowをモックしてカスタムFileReaderオブジェクトを返します。次に、そのテストを行います。以下のようなもの。

describe('get data from file', function() { 

    var $window, fileReader; 

    beforeEach(function() { 

     inject(function (_$window_) { 
      $window = _$window_; 
     }); 

     fileReader = function() { 
      return {}; 
     }; 

     spyOn($window, "FileReader").and.returnValue(fileReader); 
    }); 

    it('should read the files from the data', function() { 
     var syncFile = 'somefile.txt'; 

     expect($window.FileReader).toHaveBeenCalled(); 
    }); 
}); 
+0

これはどのように実行されるのですか? – Matarishvan

+0

@Matarishvanあなたが理解していない部分は?全体として、ウィンドウオブジェクトのFileReaderメソッドのスパイを作成します。次に、このスパイを使用して、あなた自身の意図した動作を注入し、そのメソッドに対して行われた呼び出しを追跡してテストすることができます。 – Shahzad

+0

基本的には、私のexpect関数で正確な関数を渡す必要がありますか?存在することを期待していないし、それをどう使うのか? – Matarishvan