如何在React中为非实例方法编写测试用例

时间:2018-09-27 10:54:43

标签: javascript reactjs user-interface react-redux frontend

有关编写React测试用例的帮助

import {getEvent} from './utility'
export default class MyComponent extends React.Component {
  constructor() {
     ......
  }

  componentDidMount(){
     ....
     this.addEventListeners();
  }

  addEventListeners() {
     const targetEvent = getEvent() === 'someevent' ? 'someevent' : 'someotherevent';

     if(targetEvent) {
        document.addEventListeners('targetEvent', this.handleEvent);
     }
  }
  .....
}

上面是我组件的示例代码。 我已经为该组件编写了测试用例,因为在如下所述的一种情况下编写测试用例时遇到了一些困难。

如何为以下代码编写测试用例

const targetEvent = getEvent() === 'someevent' ? 'someevent' : 'someotherevent';

getEvent()方法不是组件实例方法,也不通过。 在测试案例中如何涵盖该方法。

我们非常感谢您的帮助。

谢谢!

1 个答案:

答案 0 :(得分:0)

由于getEvent是导入文件,因此应对其进行模拟。这不仅是覆盖范围所必需的,而且还可以隔离测试单元:

it('...', async () => {
  jest.mock('./utility', () => ({
    getEvent: jest.fn().mockReturnValue(() => 'someevent')
  });
  const MyComponent = (await import('...')).default;
  ...