【问题标题】:Sum is not a function in jestSum 不是开玩笑的函数
【发布时间】:2021-09-13 22:26:06
【问题描述】:

我今天开始编写一些测试,这是我第一次使用 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?
})

【问题讨论】:

    标签: reactjs unit-testing jestjs enzyme


    【解决方案1】:

    总和未从您的文件中导出:

    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
    

    【讨论】:

    • 这不起作用,因为我的组件外部的功能,我想要它在里面
    • @gospecomid12 你不能从你的组件内部测试这个函数,你应该单独测试它,或者在你的组件中使用它,模拟与你的组件的交互并测试结果
    猜你喜欢
    • 2021-02-26
    • 2020-02-24
    • 1970-01-01
    • 2021-06-25
    • 1970-01-01
    • 1970-01-01
    • 2020-08-24
    • 2021-03-23
    • 1970-01-01
    相关资源
    最近更新 更多