如何用酶单元测试找到元素



我有一个单元测试,使用包含工作的函数。是否可以从集合中选择一个节点,然后获取文本属性?我试过了:

it('should be equaling name property', () => {
        const props = {
            myprops: [{
                email: "blaat@mail.com",
                name: "Coco Chanel"
            }]
        };
        const wrapper = shallow(<ServiceDetails {...props} />);
        expect(wrapper.find('div')[0].text).equals('Cici Chanel');
 });

这是我的react组件的一部分:

  return (
          <section>
                <div>{email}</div>
                <div>{name}</div>
          </section>
  )

但是我得到这个错误:

 TypeError: Cannot read property 'text' of undefined

如何选择第二个div并获取该div中的值?

我认为您需要唯一地标识div:

expect(wrapper.find('section div:nth-of-type(1)').text()).equals('Cici Chanel');

或更好:

return (
      <section>
            <div className="div1">{email}</div>
            <div>{name}</div>
      </section>
)
expect(wrapper.find('.div1').text()).equals('Cici Chanel');

text是函数,不是属性。

对于我来说,下面的代码可以工作

const component = wrappper.find('section.div')
expect(component.at(0).text()).toEqual('Cici chanel')

最新更新