“ foo”不是使用Jest测试组件方法的函数

时间:2019-07-08 00:40:30

标签: reactjs jestjs enzyme

我有以下内容:

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 :(得分:0)

您要测试的功能是组件本身的一部分,不会被导出,因此无法直接导入。话虽如此,看一下实现,没有什么阻止您将其移到它自己的可导出函数中

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

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

那样,您的测试就不必更改。