如何使用JEST对React App中的功能进行单元测试

时间:2019-05-28 18:35:27

标签: javascript reactjs jestjs enzyme

您好,我在JEST中进行测试时还很陌生,为什么我想问您一些支持。
我正在尝试从App.test.js中的App.js组件测试功能 但我收到一个错误:

TypeError:_App.default.avg不是函数。

这是我的 App.js 组件

class App extends React.Component {

 state={ }

 avg = (elements) => {   
 let sum=0;    
 for(let i=0; i<elements.length; i++){
     sum += elements[i].main.temp;
 }
 return (sum/elements.length).toFixed(2);
 }

  render() {
    return(
      <BrowserRouter>
          <AppContext.Provider value={contextElements}>
              <div className="App container">             
                <Route path="/" component={SettingsBar}/>               
                <Route path="/settings" component={SettingsView}/>               
                <Route exact path="/" component={RootView}/>
                <Route  path="/itemview" component={ItemView}/>
              </div>
          </AppContext.Provider>     
      </BrowserRouter>

    )  
  }
}
export default App;


还有 App.test.js

import React from 'react';
import ReactDOM from 'react-dom';
import App from './App';

describe('avg', () => {

     it('should return 3 for given array [1,2,3,4,5]', () => {
         expect(App.avg([1,2,3,4,5])).toBe(3);
     });

});

我做错了什么?

1 个答案:

答案 0 :(得分:1)

您可能想尝试创建App.js类的实例。

因此,导入后,您可以尝试类似

const myApp = new App();

然后,按您的期望,调用myApp.avg(arguments)。