«foo» не является функцией, использующей Jest для тестирования метода компонента - PullRequest
0 голосов
/ 08 июля 2019

У меня есть следующий компонент:

export class MyComponent extends React.Component {
  boolToTitleCase = (value) => {
    return value ? 'True' : 'False';
  };

render () {
  return (
    <div></div>
  );
}

Затем в моем тесте я делаю это:

import {boolToTitleCase, MyComponent} from './MyComponentFile';
// blah blah
  describe('Rendering', () => {
    it('boolToTitleCase renders true to True and false to False', () => {
        expect(boolToTitleCase(true)).toBe('True');
        expect(boolToTitleCase(false)).toBe('False');
    })
});

Я получаю эту ошибку:

    TypeError: (0 , MyComponent.boolToTitleCase) is not a function

      53 |     });
      54 |     it('boolToTitleCase renders true to True and false to False', () => {
    > 55 |         expect(boolToTitleCase(true)).toBe('True');
         |                ^
      56 |         expect(boolToTitleCase(false)).toBe('False');
      57 |     });
      58 |

Как получить доступ к этому методу напрямую?

1 Ответ

0 голосов
/ 08 июля 2019

Функция, которую вы пытаетесь протестировать, является частью самого компонента и не экспортируется, поэтому вы не можете импортировать ее напрямую. При этом, глядя на реализацию, ничто не мешает вам переместить ее в свою собственную экспортируемую функцию

export function boolToTitleCase = value => value ? 'True' : 'False';

export class MyComponent extends Component {
  render() {
    return <div></div>;
  }
}

Таким образом, ваш тест не нужно будет менять.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...