gpt4 book ai didi

reactjs - 使用 enzyme 测试 Typescript React Component 上下文

转载 作者:搜寻专家 更新时间:2023-10-30 21:12:09 24 4
gpt4 key购买 nike

我在 Typescript 中有一个 React 组件 类似这样

import * as React from 'react';
import * as PropTypes from 'prop-types';

export class MyComponent extends React.Component<{}, {}> {

context = {
callBack: Function
}
static contextTypes = {
callBack: React.PropTypes.Func
};

render() {
return (
<button onClick={this.callContextCallback}>Call Context</button>
);
}

callContextCallback = () => {
this.context.callBack();
}
}

我已经为组件编写了测试

import { mount, shallow } from 'enzyme'
import * as React from "react"
import { MyComponent } from "./MyComponent"

describe(`<MyComponent />`, () => {

let callBackMock = jest.fn()

beforeEach(() => {
wrapper = mount(
<MyComponent />, {
context: {
callBack: callBackMock
}
}
)
})

it(`should call context Callback on clicking button`, () => {
wrapper.find('button').simulate('click')
expect(callBackMock).toHaveBeenCalledTimes(1)
})
})

当我运行我的测试时,测试失败,函数没有被调用。

我什至尝试模拟监视 callContextCalback function

    it(`should call context Callback on clicking button`, () => {
let instance = wrapper.instance()
const spy = jest.spyOn(instance, 'callContextCallback')
instance.forceUpdate();
wrapper.find('button').simulate('click')
expect(spy).toHaveBeenCalledTimes(1)
})

在运行测试时我得到了这个错误

Error: Uncaught [TypeError: Cannot read property 'context' of undefined]
TypeError: Cannot read property 'context' of undefined

如何测试上下文 callBack function

最佳答案

enzyme 团队的帮助下,该问题已得到解决。

请引用这个Github Issue了解有关解决方案的更多信息。

关于reactjs - 使用 enzyme 测试 Typescript React Component 上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49053280/

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