2016-09-14 7 views
1

を返さないモック場合、私はテスト、内部の模擬結果を設定冗談手動モックは、15.1.1にupgraing後、私は冗談手動モックの問題を持っている正しい値

(反応15.3.1です)メソッドは実際の結果は期待されたものではなく、変数が作成されたときの最初のものと呼ばれます。

私が反応して冗談を言う前にうまくいきました。ここで

は私のモックです:

'use strict'; 
 

 
const psMock = jest.genMockFromModule('../ProcessService'); 
 
import clone from 'lodash/clone' 
 

 
var _resultDeOuf = []; 
 

 
function __setMockResult(result) { 
 
    _resultDeOuf = result; 
 
} 
 

 
psMock.getRelatedProcessesByGroupingId = jest.fn(() => { 
 
    return { 
 
     then: (callback) => callback(_resultDeOuf); 
 
    } 
 
}); 
 

 
psMock.__setMockResult = __setMockResult; 
 

 
export default psMock`

ここに私のテストです:

jest.unmock('../SuperProcessRow'); 
 
jest.unmock('../ProcessRow'); 
 

 
import React from "react"; 
 
import ReactDom from "react-dom"; 
 
import TestUtils from "react-addons-test-utils"; 
 
import processService from 'ProcessService' 
 

 
import SuperProcessRow from '../SuperProcessRow' 
 

 
const defaultSuperProcess = { 
 
    "processId": "97816", 
 
    "executionId": null, 
 
    "cancelExecutionId": null 
 
} 
 

 
describe('SuperProcessRow',() => { 
 

 
    beforeEach(() => { 
 
     processService.getRelatedProcessesByGroupingId.mockClear() 
 
    }); 
 

 
    it('load sub processes on super process click ',() => { 
 

 
     let responseSubProcesses = { 
 
      processes : subProcesses, 
 
      totalCount : 5 
 
     }; 
 

 
     processService.__setMockResult(responseSubProcesses); 
 

 
     let superProcessRow = TestUtils.renderIntoDocument(
 
     <table><SuperProcessRow process={defaultSuperProcess}/></table>); 
 

 
     superProcessRow = ReactDom.findDOMNode(superProcessRow); 
 

 
     let icon = superProcessRow.querySelector('i'); 
 
     TestUtils.Simulate.click(icon); 
 

 
     expect(processService.getRelatedProcessesByGroupingId.mock.calls.length).toEqual(1); 
 
    }) 
 
});

そして、実際の生産コード、IヘクタールでgetRelatedProcessGroupingIdを呼び出して、.thenメソッド内で応答を処理します。そして、テストで設定されたデータを取得する代わりに、私は初期値を取得しました:[]。

誰かがアイデアを持っていますか?

は、私は、ウィンドウオブジェクト内_resultDeOufを設定することで、それを修正し、あなたに ヴィンセント

+0

'_resultDeOuf'は配列なので、オブジェクトである' result'に代入するのではなく、 'result'を' _resultDeOuf'に 'プッシュする 'ことを意味しますか? – grgmo

+0

実際にこのモックは配列を返すだけではありません –

答えて

1

ありがとうございます。それは醜いですが動作します

関連する問題