首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >酶中的ShallowWrapper选择器

酶中的ShallowWrapper选择器
EN

Stack Overflow用户
提问于 2017-07-09 02:44:47
回答 3查看 859关注 0票数 0

我正在使用酶(airbnb)库来查找wrapper.my html是这样的

代码语言:javascript
复制
<div>
 <div></div>
<div></div>
<div></div>
</div>

我必须选择嵌套的三个div使用酶文库使用find function.Is它可能使用酶查找方法??

EN

回答 3

Stack Overflow用户

发布于 2017-10-08 20:00:43

find方法接受css选择器,因此可以使用wrapper.find('div > div')

票数 3
EN

Stack Overflow用户

发布于 2017-07-25 17:04:43

您必须向所有嵌套的div添加一个类似的类。通过这种方式,您可以同时访问所有三个div。我认为这将是最干净的方式。假设您将此组件命名为'MyComponent‘。测试套件将是:

代码语言:javascript
复制
 <div>
   <div className="sameclass"></div>
  <div className="sameclass"></div>
    <div className="sameclass"></div>
</div>

describe('MyComponent', () => {
  it('length of nested divs must be 3', () => {    
   const wrapper = mount(<Mycomponent/>)
    expect(wrapper.find('.sameclass').length).toEqual('3');      
     });
   })
票数 0
EN

Stack Overflow用户

发布于 2018-05-04 00:18:42

我不建议在您的测试中这样做。如果这样做,您的测试将高度链接到DOM实现,而这不是您想要的(我们也称其为脆弱测试)。假设您想要添加另一个div来封装所有其他div -->您的测试将失败(但它不应该失败)

可靠的测试将使用类、组件(更好)或数据选择器(也更好,因为也独立于您的类实现)来针对特定的div。

我将以你的例子为例,做一点修改:

下面是组件的呈现:

代码语言:javascript
复制
<div className="Card">
   <div>
     <div data-selector="Card-title">{this.props.title}</div>
   </div>
   <div data-selector="Card-description">{this.props.description}</div>
   <button data-selector="Card-button">{this.props.buttonLabel}</button>
</div>

现在你测试它的好方法是:(使用Jest)

代码语言:javascript
复制
it('Should render a title', () => {
  const props = {title: 'Some Title'};
  const wrapper = shallow(<MyComponent {...props} />);

  const titleWrapper = wrapper.find({'data-selector': 'Card-title'});
  expect(titleWrapper).toHaveLength(1);
  expect(titleWrapper.text()).toEqual(props.title);
});

即使对于按钮,最好是以数据选择器为目标:如果明天您决定使用react组件而不是常规按钮,您的测试不会失败:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44989632

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档