Как протестировать метод, который находится в mapStateToProps, в React с помощью Jest - Enzyme - PullRequest
1 голос
/ 30 мая 2020

Я не могу увеличить покрытие для этой строки handleSave, которую я передаю как prop моему компоненту. Однако я импортирую mapStateToProps из моего файла контейнера в тестовом примере и использую .toBeTruthy() для проверки тестового примера.

Вот суть моего кода

export const mapStateToProps = (state, ownProps) => {
  return {
    handleSave: title => ownProps.history.push(setTitle(title)),
  };
};

Это это тестовый пример, который я написал

it('mapStateToProps test case', () => {
  const result = mapStateToProps(state, ownProps);
  expect(result.handleSave).toBeTruthy();
});

Кто-нибудь может помочь? Что мне делать, чтобы получить страховку handleSave?

1 Ответ

1 голос
/ 30 мая 2020

Что вы можете сделать, так это смоделировать ownProps и протестировать функцию фиксации, например:

const mockFn = jest.fn();
const ownProps = {
 history: {
   push: mockFn
 }
}

const result = mapStateToProps(state, ownProps);

// Now call the handle save function
result.handleSave("My title");


// And then as follows:

// This will ensure that your function is calling ownProps history push method.
expect(mockFn).toBeCalled();

// To check the funciton has only been called once
expect(mockFn.mock.calls.length).toBe(1);


// This is to check if the correct argument has been passed. Be sure to pass in what your `setTitle` funciton returns 
expect(mockFn.mock.calls[0][0]).toBe("My title");

...