У меня есть базовая форма с моделью (или магазином) в дереве состояний mobx со свойствами для добавления нового элемента и удаления элемента. Я передаю экземпляр модели компоненту в качестве опоры.
My Component:
render() {
const {itemList} = this.props;
return (
<div className="container">
<h1>Shopping Items Calculator</h1>
<form
onSubmit={e => {
e.preventDefault();
itemList.addItem({
name: this.state.name,
quantity: parseInt(this.state.quantity, 10),
price: parseFloat(this.state.price),
});
this.setState({
name: '',
quantity: '',
price: '',
});
}}>
My model:
const ItemList = types
.model('ItemList', {
items: types.array(Item),
})
.actions(self => ({
addItem(item) {
self.items.push(item);
},
deleteItem(item) {
return destroy(item);
},
))
.views(self => ({
totalItemsPrice() {
return self.items.reduce((sum, item) => sum + item.total(), 0);
},
}));
Я хочу проверить, когда в форме нажимается кнопка отправки, вызывается метод addItem () для экземпляра и добавляется новый элемент. Вот что у меня есть:
const itemList = ItemList.create({
items: [
{
name: 'milk',
price: 3,
quantity: 1,
},
{
name: 'candy',
price: 1,
quantity: 2,
},
],
addItem() {
onSubmitMock();
},
});
beforeEach(() => {
jest.clearAllMocks();
wrapper = shallow(<PatientTestView itemList={itemList} />);
});
it('should add new item when submit is called', () => {
wrapper.find('form').simulate('submit', {preventDefault: () =>
{}});
expect(onSubmitMock).toBeCalledWith({
name: 'meat',
quantity: 1,
price: 1,
});
});
Я использую шутку и фермент. Любая помощь приветствуется, спасибо!