Javascript 无法找到用于测试的唯一按钮组件

Javascript 无法找到用于测试的唯一按钮组件,javascript,reactjs,jestjs,enzyme,Javascript,Reactjs,Jestjs,Enzyme,我有以下组件,并试图对其执行测试。 我能够找到所有其他组件,如元素和表格。 但查找按钮对象没有结果,即使有两个按钮。 为什么会这样? 注意,这里的按钮、元素和表格组件都是我的自定义组件 正在测试的组件 export const MyComponent = () => ( <div> <div style={{ margin: 20 }}> <Button onClick={() => {}}> Click M

我有以下组件,并试图对其执行测试。
我能够找到所有其他组件,如元素表格
但查找按钮对象没有结果,即使有两个按钮。
为什么会这样?
注意,这里的按钮、元素和表格组件都是我的自定义组件

正在测试的组件

export const MyComponent = () => (
  <div>
    <div style={{ margin: 20 }}>
      <Button onClick={() => {}}>
        Click Me!
      </Button>
      <Button onClick={() => {}}>
        Click Me!
      </Button>
    </div>

    <Element name="name">
      title
    </Element>
    <div>
      <Table name="name" />
    </div>
  </div>
);

export default MyComponent;
export const MyComponent=()=>(
{}}>
点击我!
{}}>
点击我!
标题
);
导出默认MyComponent;
我的测试

describe('test page', () => {

     it('should click', () => {

    const mockSelectorToggle = jest.fn();
    const defaultProps = {};
    const initialise = props => shallow(<MyComponent {...defaultProps} {...props} />);
    const wrapper = initialise();

    // all the following found
    wrapper.find('div')
    wrapper.find('div').find('div')
    wrapper.find('Element')
    wrapper.find('Table')

    // nothing found. Why only Button not findable?
    // wrapper.find('Button')
    // wrapper.find('div').find('div').find('Button')

    // looking to test it this way
    wrapper.find('Button').first().simulate('click');
    expect(mockSelectorToggle).toHaveBeenCalled();
  });
});
description('testpage',()=>{
它('应该点击',()=>{
const mockSelectorToggle=jest.fn();
const defaultProps={};
const initialise=props=>shallow();
常量包装器=初始化();
//发现以下所有
wrapper.find('div'))
wrapper.find('div').find('div'))
wrapper.find('元素')
wrapper.find('Table'))
//没有找到。为什么只有按钮无法找到?
//wrapper.find('按钮')
//wrapper.find('div').find('div').find('Button'))
//希望通过这种方式进行测试
wrapper.find('Button').first().simulate('click');
期望(mockSelectorToggle).tohavebeincalled();
});
});

根据
文档,有各种选择器可用,尤其是本

还有这个

现在,这个问题似乎与这里的解释有关:

React组件名称和道具(按钮、按钮[type=“submit”]等)-但是,请注意,强烈建议按组件构造函数/函数查找,而不是按显示名称查找

我的印象是选择器正在搜索HTML
按钮
标记,而不是实际的
按钮
组件

我的建议是以以下方式更改代码:

wrapper.find(Button);
因此,基本上按照文档中的建议执行:“按组件构造函数/函数查找,而不是按显示名称查找”

有趣的一点是:

所有用户代理都将测试的HTML元素和属性名称视为不区分大小写


即使发现
似乎很奇怪。

您好!抱歉,您编写的代码格式不正确,例如
@EmanueleScarabattoli抱歉,已更新。请不要担心:)
shallow
是来自
Enzyme
对吗?@EmanueleScarabattoli是来自Enzyme。感谢您查看它。有点奇怪,因为正如您所说,表本身也是一个html元素名,但这并没有问题。另外,当我使用按钮组件时,它会显示not found(未找到),即使我确实导入了它。在摆弄的时候,他注意到mount能找到它,而Sharrow却找不到。我真的无法解释为什么。。但我计划使用mount。在某些情况下,我也遇到了一些与
mount
相反的
问题。最好的想法是:“试着去理解为什么”,实际的行为是:“好吧,伙计!不要用肤浅,让我们用坐骑吧!”哈哈哈,显然我是在开玩笑,但有时会发生:)