У меня есть компонент, который вызывает AJAX-вызов в методе componentDidMount
. Пока я пытаюсь сделать это с помощью React.addons.TestUtils
, компонент получает визуализацию без вызова AJAX. Как я могу протестировать компонент реакции с помощью шутки, чтобы он вызывал вызов AJAX? Должен ли я использовать phantomJS (или браузер, например env), чтобы обеспечить способность DOM реагировать на компонент?Узел тестирования реагирует на компонент, который делает вызовы ajax с использованием JEST
Реагировать компонент:
return React.createClass({
componentDidMount : function() {
$.ajax({
... makes http request
})
}
render : function() {
<div>
//view logic based on ajax response...
</div>
}
});
TestCase:
jest.dontMock(../MyComponent);
var React = require('react/addons');
var TestUtils = React.addons.TestUtils;
var MyComponent = require(../MyComponent);
describe('Sample Test', function(){
it('To Render the component', function() {
var component = <MyComponent />;
var DOM = TestUtils.renderIntoDocument(component);
.... // Some other code...
});
})
Можете ли вы расширить свой ответ, чтобы лучше описать, как шутка будет издеваться над $ .ajax? –
По умолчанию, установленный для шутки, автоматически издевается над всем, за исключением того, что вы специально задали, чтобы не издеваться. Итак, скажем, вы вызываете $ .ajax с обратным вызовом 'success' и' error'. $ .ajax.calls - это шуточный массив вызовов функции $ .ajax. Мы получаем первый вызов путем индексирования [0], а затем первый аргумент с другим [0] ($ .ajax обычно имеет только один аргумент, словарь/объект javascript).Это дает нам доступ к обратным вызовам успеха и ошибок, позволяя нам передавать любые произвольные данные, которые мы ожидаем от этих функций, и тестировать их. Надеюсь, что это имеет смысл? –