2016-06-01 4 views
0

私は以下の機能を持っており、そのための仕様をジャスミン*に書きたいと思います。pouchDB文書をどのようにモックできますか?

function getData(){ 
    return new Promise(function(resolve,reject){ 
     myDB.query('testview/testfn', {key: false, include_docs: true}).then(function(result){ 
      var testdata = result.rows; 
      if(testdata.length){ 
       resolve(testdata[Math.floor(Math.random() * testdata.length)].doc); 
      }else{ 
       resolve(); 
      } 
     }, function(error){ 
      reject(error); 
     }); 
    }); 
} 

ここで上記のコードにおいて、MYDBpouchDBのインスタンスです。基本的に私はJasmineを初めて使っており、上記の機能のテストを書く必要があります。

答えて

0

私はジャスミンでモッキングをチェックします。たとえば、jasmine.createSpyObjdocs)を読むことができます

あなたはlocalDBとその方法をモックできます:query。次に、メソッドがモックと正しく相互作用することを確認できます。

it("Verify getting random song", function() { 
    localDB = jasmine.createSpyObj('localDB', ['query']); 
    getRandomSong(); 
    expect(localDB.query).toHaveBeenCalledWith(
     'song/downloadStatus', 
     jasmine.objectContaining({key: false, include_docs: true})); 
    // more expects. 
}); 
+0

おかげで –

+0

@laroslav多くは、どのように私はlocalDB.query()の結果を得た後フローをテストすることができます。私は、その結果を模擬し、はい、私はその約束としてそれを模擬することができますどのようにすれば、それに応じてテストを書く必要があります? –

+0

私は少なくとも2つのアプローチを考えます。コールバックが複数行関数の場合は、別のメソッドに抽出してから別々にテストします。 2.約束を解決し、結果を確認することができます。ここでは、お尻を上げるための投稿です:https://blog.pivotal.io/labs/labs/testing-javascript-promises –

関連する問題