首页 > 解决方案 > Sum 不是开玩笑的函数

问题描述

今天我第一次用 Jest 和 Enzyme 开始写一些测试。在我想测试一个特定的函数“sum”之前它工作得很好。

我得到的错误是:TypeError: (0 , _App.sum) is not a function 这会导致什么?

这是我的 App.js

import logo from './logo.svg'
import './App.css'

const App = () => {
    const sum = (a, b) => {
        return a + b
    }

    return (
        <div className="App">
            <header className="App-header">
                <img src={logo} className="App-logo" alt="logo" />
                <p>Hello</p>
                <a
                    className="App-link"
                    href="https://reactjs.org"
                    target="_blank"
                    rel="noopener noreferrer"
                >
                    Learn React
                </a>
            </header>
        </div>
    )
}

export default App

我的 App.test.js 文件:

import { shallow } from 'enzyme'
import App from './App'
import { sum } from './App'

it('renders without crashing', () => {
    shallow(<App />)
})

it('Text contains Hello', () => {
    const wrapper = shallow(<App />)
    expect(wrapper.contains(<p>Hello</p>)).toEqual(true)
})

it('Sum equals 3', () => {
    expect(sum(2 + 1)).toBe(3) // This one fails, why?
})

标签: reactjsunit-testingjestjsenzyme

解决方案


Sum 不会从您的文件中导出:

import logo from './logo.svg'
import './App.css'

export const sum = (a, b) => {
    return a + b
}

const App = () => {
    

    return (
        <div className="App">
            <header className="App-header">
                <img src={logo} className="App-logo" alt="logo" />
                <p>Hello</p>
                <a
                    className="App-link"
                    href="https://reactjs.org"
                    target="_blank"
                    rel="noopener noreferrer"
                >
                    Learn React
                </a>
            </header>
        </div>
    )
}

export default App

推荐阅读