gpt4 book ai didi

javascript - react 测试。如何测试 react 组件内部的功能

转载 作者:行者123 更新时间:2023-11-28 20:38:53 24 4
gpt4 key购买 nike

在 React 组件中测试方法的正确方法是什么,在本例中为 componentDidMount。我想测试组件内部的 setTimeOut 函数。我应该使用 stub 吗?例如下面的代码:

 componentDidMount() {
setTimeout(() => this.setState({ isOpen: true }), 1);
}

如何测试正在调用的 setTimeout?

我尝试了以下方法,但没有用。我错过了什么?

my imports:

import test from 'ava';
import React from 'react';
import { ad } from 'components/Ad/Ad';
import { shallow, mount } from 'enzyme';
import { stub } from 'sinon';
import { expect } from 'chai';
import sinon from 'sinon';

let info;

test.beforeEach(() => {

info = shallow(<ad {...props} />)
});

test('is active: true after mounting', done => {
info.instance().componentDidMount()
setTimeout(() => {
info.state('active').should.be.true <--line:42
done()
}, 0)
})

我收到以下错误:类型错误:无法读取未定义的属性“be” null._onTimeout (test/Components/Ad.unit.js:42:5)

最佳答案

这是一个使用 mocha、chai 和 enzyme 的示例:

组件:

import React, {PropTypes as T} from 'react'
import classnames from 'classnames'

export default class FadeIn extends React.Component {
constructor(...args) {
super(...args)
this.state = {active: false}
}

componentDidMount() {
setTimeout(() => this.setState({active: true}), 0)
}

render() {
const {active} = this.state
return (
<div className={classnames('fade-in', {active}, this.props.className)}>
{this.props.children}
</div>
)
}
}

FadeIn.propTypes = {
className: T.string
}

FadeIn.displayName = 'FadeIn'

测试:

import React from 'react'
import {shallow} from 'enzyme'
import FadeIn from '../../src/components/FadeIn'

describe('FadeIn', () => {
let component

beforeEach(() => {
component = shallow(<FadeIn/>)
})

it('is initially active: false', () => {
component.state('active').should.be.false
component.find('div.fade-in').prop('className').should.equal('fade-in')
})

it('is active: true after mounting', done => {
component.instance().componentDidMount()
setTimeout(() => {
component.state('active').should.be.true
component.find('div.fade-in').prop('className').should.equal('fade-in active')
done()
}, 0)
})

})

关于javascript - react 测试。如何测试 react 组件内部的功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41745415/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com