亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

酶仍然在 React 中尋找應通過條件渲染隱藏的元素

酶仍然在 React 中尋找應通過條件渲染隱藏的元素

小怪獸愛吃肉 2023-07-14 16:01:39
我有一個可以呈現簡單計數器的應用程序,我用它來學習 Jest 和 Enzyme。我希望如果用戶嘗試將計數器減少到 0 以下,則顯示錯誤消息。當用戶看到錯誤并將計數器增加到 0 以上時,我希望隱藏錯誤消息。當我運行應用程序時,這工作得很好,但 Enzyme 似乎保留了錯誤消息所在的 dom 部分,即使計數器增加了。這是我的應用程序組件function App() {  const [counter, setCounter] = useState(0)  const [showError, setShowError] = useState(false)  const decrementCounter = () => {    if(counter > 0) {      setCounter(counter - 1)    } else {      setShowError(true)    }  }  const incrementCounter = () => {    if(showError) {      setShowError(false)    }    setCounter(counter + 1)  }  return (    <div className="App" data-test="component-app">      <h1 data-test='counter-display'>The counter is <span data-test='count'>{counter}</span></h1>      {showError ? <h3 style={{color: 'red'}} data-test='below-zero-error-message'>Can not go below 0</h3> : ''}      <button onClick={incrementCounter} data-test='increment-button'>Increment</button>      <button onClick={decrementCounter} data-test='decrement-button'>Decrement</button>    </div>  );}這是我的測試以及其中使用的一些功能const setup = () => shallow(<App />)const findByTestAttr = (wrapper, val) => wrapper.find(`[data-test='${val}']`)test('error message disappears when counter larger than 0', () => {    const wrapper = setup()    const decrementButton = findByTestAttr(wrapper, 'decrement-button')    const incrementButton = findByTestAttr(wrapper, 'increment-button')    decrementButton.simulate('click')    let errorMessage = findByTestAttr(wrapper, 'below-zero-error-message')    expect(errorMessage.length).toBe(1)    incrementButton.simulate('click')    errorMessage = findByTestAttr(wrapper, 'below-zero-error-message')    expect(errorMessage.length).toBe(0)})當運行應用程序并在 Chrome 中觀看 dom 時,一旦我將計數器增加到 0 以上,包含錯誤消息的部分就會被刪除。
查看完整描述

1 回答

?
萬千封印

TA貢獻1891條經驗 獲得超3個贊

試試這個方法,


const setup = () => shallow(<App />);

const findByTestAttr = (wrapper, val) => wrapper.find(`[data-test='${val}']`);


test('error message disappears when counter larger than 0', () => {

    const wrapper = setup();

    

    //Decrement opration

    const decrementButton = findByTestAttr(wrapper, 'decrement-button');

    decrementButton.simulate('click');

    let errorMessage = findByTestAttr(wrapper, 'below-zero-error-message');

    console.log('Error ==>',wrapper.debug());

    expect(errorMessage.length).toBe(1);


    // Increment Operation

    const incrementButton = findByTestAttr(wrapper, 'increment-button');

    incrementButton.simulate('click');

    console.log('No error ==>',wrapper.debug());

    errorMessage = findByTestAttr(wrapper, 'below-zero-error-message');

    expect(errorMessage.length).toBe(0);

});

如果您遇到任何問題,請告訴我。


查看完整回答
反對 回復 2023-07-14
  • 1 回答
  • 0 關注
  • 146 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號