Добрый день. У меня следующая проблема: у меня есть редактор элементов. Как это работает: я нажимаю кнопку «Добавить», заполняю информацию, нажимаю кнопку «Сохранить». Функция _onSaveClicked в моем реагирующем компоненте обрабатывает событие щелчка и функцию вызова из службы, которая отправляет параметры из формы редактирования на сервер и возвращает обещание. _onSaveClicked реализует
.then(response => {
console.log('I\'m in then() block.');
console.log('response', response.data);
})
функцию и ждет обещанного результата. Работает в реальной ситуации. Я создал поддельный сервис и разместил его вместо настоящего сервиса. Функционал службы содержит:
return Promise.resolve({data: 'test response'});
Как вы можете видеть, поддельный сервис возвращает обещание, и блок .then() должен работать немедленно. Но блок .then() никогда не работает.
Шуточный тест:
jest.autoMockOff();
const React = require('react');
const ReactDOM = require('react-dom');
const TestUtils = require('react-addons-test-utils');
const expect = require('expect');
const TestService = require('./service/TestService ').default;
let testService = new TestService ();
describe('TestComponent', () => {
it('correct test component', () => {
//... some initial code here
let saveButton = TestUtils.findRenderedDOMComponentWithClass(editForm, 'btn-primary');
TestUtils.Simulate.click(saveButton);
// here I should see response in my console, but I don't
});
});
Функция сохранения компонента React:
_onSaveClicked = (data) => {
this.context.testService.saveData(data)
.then(response => {
console.log('I\'m in then() block.');
console.log('response', response.data);
});
};
Услуга:
export default class TestService {
saveData = (data) => {
console.log('I\'m in services saveData function');
return Promise.resolve({data: data});
};
}
Я вижу в консоли только "Я в сервисной функции saveData".
Как заставить это работать? Мне нужно имитировать ответ сервера.
Спасибо за ваше время.