2016-09-14 10 views
1

У меня есть проблема с шутку ручной насмешками после upgraing к 15.1.1 (реагировать является 15.3.1)Jest ручной макет не возвращает правильное значение

Когда я установил ложный результат внутри теста, когда издевались метод называется фактическим результатом, а не ожидаемым, но начальным, когда была создана переменная.

Он работал отлично, прежде чем я изменил реакцию и шут.

Вот мой макет:

'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); 
 
    }) 
 
});

И В реальном производстве код, я га ve вызов getRelatedProcessGroupingId, и я обрабатываю ответ внутри метода .then. И вместо того, чтобы извлекать данные, установленные в тесте, я получил значение intial: [].

У кого-то есть идея?

Спасибо Винсент

+0

'_resultDeOuf' - массив, поэтому вы хотите« нажать »' result' на '_resultDeOuf' вместо назначения« result », который является объектом? – grgmo

+0

на самом деле этот макет не только возвращает массивы –

ответ

1

Я установил ее, установив _resultDeOuf внутри объекта окна. Это уродливо, но оно работает

 Смежные вопросы

  • Нет связанных вопросов^_^