Как проверить методы экземпляра, которые вводятся в качестве реквизита на компонент? - PullRequest
0 голосов
/ 28 августа 2018

У меня есть базовая форма с моделью (или магазином) в дереве состояний 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,
    });
   });

Я использую шутку и фермент. Любая помощь приветствуется, спасибо!

...