В моем учебнике, как приложения у меня есть AddForm компонент:react.js - тестирование формы компонент
var React = require('react');
var Input = require('react-bootstrap').Input;
var TeamActions = require('../actions/team_actions.js');
var AddForm = React.createClass({
handleFormSubmit: function(e) {
e.preventDefault();
var name = this._trimmedValue(this.refs.name);
var rating = this._trimmedValue(this.refs.rating);
if (name && rating) {
TeamActions.addTeam(
{name: name, rating: rating}
);
this._clearField(this.refs.name);
this._clearField(this.refs.rating);
}
},
_trimmedValue: function(field) {
return field.getInputDOMNode().value.trim();
},
_clearField: function(field) {
field.getInputDOMNode().value = '';
},
render: function() {
return (
<form onSubmit={this.handleFormSubmit}>
<Input label="Name" type="text" placeholder="Name" ref="name" />
<Input label="Rating" type="text" placeholder="Rating" ref="rating" />
<Input bsStyle="primary" type="submit" value="Add!" />
</form>
);
}
})
module.exports = AddForm;
TeamActions:
var McFly = require('mcfly');
var Flux = new McFly();
var TeamConstants = require('../constants/team_constants.js');
var TeamActions = Flux.createActions({
addTeam: function(team) {
return {
actionType: TeamConstants.ADD_TEAM,
team: team
}
}
});
module.exports = TeamActions;
Как вы можете видеть, я использую McFly и React-Bootstrap.
Теперь я хочу протестировать его, используя шутку.
Я хотел бы иметь следующие тестовые случаи:
1), если кто-то пытается отправить форму с пустыми входами, ничего не должно произойти (чтобы быть более точным - не должно быть никакого взаимодействия на TeamActions макет)
2) если одна представляет форму с правильным именем и рейтингом, то должен быть правильным вызовом TeamActions макета
3) если один представляет форму с правильным именем и рейтингом, то имя и рейтинг входы должны быть очищены ,
Как его проверить? Должен ли я каким-либо образом получить доступ к DOM, используя тестовые тесты Response?
Должен ли я каким-то образом моделировать подачу формы? Если да, то как мне это сделать?
И последнее: мой AddForm зависит от TeamActions. Написав:
jest.dontMock('../add_form.js');
является шутка поручено дразнить всю эту зависимость (реагировать, реагировать-самозагрузку, team_actions), или я должен как-то макет TeamActions себя?
// редактировать:
Потому что кто-то сказал, что я спросил слишком много quuestions в одной теме, чтобы быть более конкретным:
Как я могу моделировать форму представления с конкретной полезной нагрузки, используя TestUtils? Нужно ли мне самостоятельно издеваться над TeamActions или меня издевается за меня автоматически?
Можете ли вы упростить это, чтобы быть конкретным вопросом?Существует несколько проблем, и каждый из них слишком широк для хорошего легко усваиваемого ответа StackOverflow. – WiredPrairie
Конечно, отредактируйте в секунду. – slnowak
@WiredPrairie Я отредактировал свой вопрос. Честно говоря, я вижу одну большую проблему с основной темой «как ее проверить?». И правильный фрагмент кода решит все мои проблемы. Но я все-таки старался быть более конкретным. – slnowak