代码之家  ›  专栏  ›  技术社区  ›  josemigallas

酶hasClass返回错误

  •  1
  • josemigallas  · 技术社区  · 6 年前

    我有以下反应成分:

    const FeatureAccess = ({ value }) => {
      let liClass = `FeatureAccessList-item FeatureAccessList-item--${value}`
    
      return (
        <li class={liClass}>
          <label for={`user_member_permission_ids_${value}`}>
            <input
              name='user[member_permission_ids][]'
              id={`user_member_permission_ids_${value}`}
              value={value}
            />
          </label>
        </li>
      )
    }
    

    想法是 li 元素有两个类:

    FeatureAccessList-item
    FeatureAccessList-item--${value}
    

    然而,我的测试总是失败,因为某些原因,酶不能正确地断言它:

    // wrapper = mount(<FeatureAccess {...props} />)
    
    it('should have the correct class depending on "value"', () => {
      const value = 'Spider-sense'
      wrapper.setProps({ value })
    
      // Expected: true, Received: false
      expect(wrapper.find('li').hasClass(`FeatureAccessList-item--${value}`)).toBe(true)
    })
    

    这没有任何意义,因为如果我记录 wrapper.find('li') 这就是我得到的:

      console.log spec/javascripts/Users/components/FeatureAccess.spec.jsx:46
    
        <li class="FeatureAccessList-item FeatureAccessList-item--Spider-sense">
          <label for="user_member_permission_ids_Spider-sense">
            <input class="user_member_permission_ids " name="user[member_permission_ids][]" id="user_member_permission_ids_Spider-sense" value="Spider-sense" type="checkbox" checked={false} onChange={[Function: onChange]} />
          </label>
        </li>
    

    班在那里!这里发生了什么?

    我也试过 find(`.FeatureAccessList-item--${value}`).exist() 它也返回假…

    1 回复  |  直到 6 年前
        1
  •  3
  •   Konrad Dziurdź    6 年前

    你应该使用 className 而不是 class

    https://reactjs.org/docs/introducing-jsx.html

    由于JSX比HTML更接近于JavaScript,因此react dom使用 camelcase属性命名约定,而不是html属性名。

    例如,类在JSX中变为类名,tabindex变为 表索引。