iT邦幫忙

2021 iThome 鐵人賽

DAY 23
0
Modern Web

用Jest和Enzyme來寫React測試吧!!系列 第 23

【Day23】計數器減號按紐及測試小練習,先別偷看解答R ~ (⁎˃ᆺ˂)

  • 分享至 

  • xImage
  •  

這篇要來個小小練習,增加一個減號的按鈕,並針對其結果作一個單元測試。

先別往下看,給自己五到十分鐘... 再往下看解答 !


首先,和累加的按鈕一樣,我們先在畫面上的部份建立一個Button的DOM,並給予data-test屬性名稱

<Col xs lg={4}>
              <Button variant="primary"
                      data-test="decrement-button"
                      size="lg"
                  >
                      Take away a heart !
                  </Button>
  </Col>

再來,我們必須檢查計數器的值不能小於0,如果小於0則給予errorMessage

所以我們必須再建立一個errorMessage的state

const [errorMessage, setErrorMessage] = React.useState("");

並且在button的onClick事件上補上判斷

 <Col xs lg={4}>
              <Button variant="primary"
                      data-test="decrement-button"
                      size="lg"
                      onClick={function(){
                          if(count==0){
                            setErrorMessage("XXXX")
                        }else{
                            setCount(count-1)
                        }
                      }}
                  >
                      Take away a heart !
                  </Button>
</Col>

如果點下去是小於0,給予錯誤訊息,如果不是則將計數器-1

接下來我們要來建立剪號的單元測試,看看是不是和我們預期的一樣


首先 一樣先給一個名稱淺顯易懂的單元測試

test("clicking on button decrements counter display",()=>{

});

再來一樣先渲染出我們的Component且取得剪號按鈕的DOM

test("clicking on button decrements counter display",()=>{

const wrapper = setup();
const button=findByTestAttribute(wrapper,'decrement-button');


});

接著一樣透過simulate API 去模擬按鈕被按下的樣子

test("clicking on button decrements counter display",()=>{

const wrapper = setup();
const button=findByTestAttribute(wrapper,'decrement-button');
button.simulate('click');

});

最後取得目前計數器的值,看看計數器在按下後有沒有變負數,如果沒有 => 代表測試成功了

(因為沒有進到計數器-1這個判斷裡)

test("clicking on button decrements counter display",()=>{

const wrapper = setup();
const button=findByTestAttribute(wrapper,'decrement-button');
button.simulate('click');

const count=findByTestAttribute(wrapper,"count").text();
expect(count).toBe("0");

});

存檔後,npm test會自動重新偵測,Success了嗎!!? 如果成功了,那就大功告成啦~

以上是小小計數器的幾個單元測試,當然~如果有想到其他需要檢查的地方,

也可以自己寫成單元測試!


下一篇,我們要把先前所學的測試整理整理一下 ! 因為一坨拉庫也忘記到底學了什麼對吧 : )

沒問題的,整理一下會清楚很多 !

等整理完之後就會進行React的補充囉 ~ 謝謝各位看官看到這邊 !


上一篇
【Day22】判斷計數器數字初始值是否為0且按下增加的按鈕時結果是否正確 「(°ヘ°)
下一篇
【Day24】來到了測試的總整理啦 ヽ(‘ ∇‘ )ノ
系列文
用Jest和Enzyme來寫React測試吧!!30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言