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を設定することで、それを修正し、あなたに ヴィンセント
'_resultDeOuf'は配列なので、オブジェクトである' result'に代入するのではなく、 'result'を' _resultDeOuf'に 'プッシュする 'ことを意味しますか? – grgmo
実際にこのモックは配列を返すだけではありません –