2016-08-11 27 views
1

私は(Angular.js 1.5 + NG-Reduxの)コード持っている:私はAPIへの要求がなされたかどうかを確認するテストを書きたいジャスミン - テストの約束。コールバック関数のテスト方法

update: (itemId, value) -> (dispatch, getState) -> 
    params = { 
    id: itemId, 
    action: value 
    } 
resultsAPI.change(params).then(results) -> 
    dispatch({ 
    type: "CHANGE_STATE" 
    itemId: itemId 
    output: results 
    }) 

update: function(itemId, value) { 
    return function(dispatch, getState) { 
    var params; 
    params = { 
     id: itemId, 
     action: value 
    }; 
    resultsAPI.change(params).then(function(results) { 
     dispatch({ 
     type: "CHANGE_STETE", 
     itemId: itemId, 
     output: results 
     }); 
    }); 
    }; 
} 

やCoffeeScriptのを正しいパラメータで .then()ディスパッチ関数が呼び出された後にもチェックします。どのようにそれについて行くすべてのアイデア?

+0

テストでは、APIリクエストを送信してテストする必要があります。その後、 'toHaveBeenCalledWith()'機能を使用できます。この記事をチェックすることをおすすめします。http://www.htmlgoodies.com/html5/javascript/spy-on-javascript-methods-using-the-jasmine-testing-framework.html#fbid=ZMd4zHJBGuC –

+0

Googleジャスミン非同期テスト。たくさんのものがあります。 Stack overflowに投稿する前に研究をしてください。あなたが理解していないドキュメントがあれば、それを質問に含めてください。 –

答えて

0
it "call dispatch after .then", -> 
    filterId = 1 
    value = "stop" 

    params = 
    id: filterId 
    action: value 

    dispatch = jasmine.createSpy("dispatch") 
    dispatch = => 
     type: "CHANGE_STATE" 
     filterId: 2 

    spyOn(@resultsAPI, "change").and.callFake(-> dispatch()) 
    @ngRedux.dispatch(update()) 
    @InvestigationsResultsAPI.changeState(params) 
    dispatch() 
    expect(dispatch).toHaveBeenCalled() 
関連する問題