Мне интересно, почему мой макет, похоже, не переопределяет метод onclick компонента. На самом деле это так, за исключением случаев, когда я имитирую щелчок.
/** @jsx React.DOM */
//tests/app/modules/autocompletesearchinput-test.js
jest.dontMock('../../../app/modules/AutocompleteSearchInput.jsx');
var React, TestUtils, FluxxorTestUtils, FluxConstructor, realFlux, fakeFlux, MyComponent, Component;
describe('Testing Autocomplete Search Input', function() {
beforeEach(function() {
React = require('react/addons');
TestUtils = React.addons.TestUtils;
FluxxorTestUtils = require('fluxxor-test-utils');
FluxConstructor = require('../../../app/FluxConstructor.js');
realFlux = FluxConstructor();
fakeFlux = FluxxorTestUtils.fakeFlux(realFlux);
fakeFlux.genMocksForStoresAndActions();
// now all store and action methods are mocked for testing
MyComponent = require('../../../app/modules/AutocompleteSearchInput.jsx');
Component = TestUtils.renderIntoDocument(<MyComponent flux={fakeFlux} />);
});
it('when created, component should have AutocompleteSearchInput class', function() {
var div = TestUtils.findRenderedDOMComponentWithClass(
Component, 'AutocompleteSearchInput');
});
it('when mounted and clicked, should call searchBtnClick', function() {
Component.searchBtnClick = jest.genMockFunction();
TestUtils.Simulate.click(Component.refs.searchButton.getDOMNode());
Component.searchBtnClick();
expect(Component.searchBtnClick).toBeCalled();
});
});
Для справки, я использовал это: Протестировать функцию компонента React с помощью Jest< /а>
Component.searchBtnClick();
не должно быть здесь, вы просто добавляете эту строку, чтобы тест прошел правильно? Затем вы должны написатьonClick
(camelCase) в методе рендеринга (React проигнорируетonclick
) - person ncuillery   schedule 27.02.2015searchBtnClick
точно там! Это свойство вReact.createClass({})
.onClick
также является верблюжьим регистром в качестве атрибута тега. Тест проходит, когда я используюComponent.searchBtnClick()
, но когда я имитирую его. Выполняется оригинальный метод, а не макет. Мне нужен макет, потому что исходная функция вызовет исключение. Хм. Спасибо. - person 4m1r   schedule 27.02.2015