第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

需要幫助獲得1行Jest(React)

需要幫助獲得1行Jest(React)

慕工程0101907 2022-08-18 10:26:06
這就是我正在覆蓋的功能,但是仍然抱怨我沒有覆蓋之前的第4行。npm run coverageexport const CardContainer = ({ index, icon, copy, click }) => (    <BlankCard variant="light" title={copy}>{icon}<p>{copy}</p>        {click && <a className="tile-learn-more" id={`tile-id-${index}`} onClick={() => click(index)}>Learn More</a>}    </BlankCard>);有問題的行:{click && <a className="tile-learn-more" id={`tile-id-${index}`} onClick={() => click(index)}>Learn More</a>}describe('CardContainer component', () => {    it('will contain BlankCard component', () => {        const props = { icon: 'icon', copy: 'foo' };        const wrapperBlankCard = shallow(<CardContainer {...props} />);        const blankCard = wrapperBlankCard.find('BlankCard');        expect(blankCard).toHaveLength(1);        expect(blankCard.at(0).prop('variant')).toEqual('light');        expect(blankCard.at(0).prop('title')).toEqual('foo');    });    it('will contain a Learn More link if click contains a function', () => {        const mockOnClick = jest.fn();        const props = { index: 1, icon: 'icon', copy: 'foo', click: mockOnClick };        const wrapper = shallow(<CardContainer {...props} />);        const learnMore = wrapper.find('.tile-learn-more');        expect(learnMore).toEqual({});        expect(learnMore.prop('id')).toEqual('tile-id-1');        expect(learnMore.contains('Learn More'));        expect(learnMore.prop('onClick')).toEqual(expect.any(Function));    });    it('will not contain a Learn More link if click is undefined', () => {        const props = { icon: 'icon', copy: 'foo', click: null };        const wrapper = shallow(<CardContainer {...props} />);        expect(wrapper.find('.tile-learn-more')).toEqual({});    });});我正在測試點(diǎn)擊道具的不同狀態(tài),但是到目前為止還無法覆蓋該行,這里有任何想法嗎?
查看完整描述

1 回答

?
瀟瀟雨雨

TA貢獻(xiàn)1833條經(jīng)驗(yàn) 獲得超4個(gè)贊

如果你稍微重構(gòu)一下,你可以看到哪一行沒有被調(diào)用:


export const CardContainer = ({ index, icon, copy, click }) => (

  <BlankCard variant="light" title={copy}>{icon}<p>{copy}</p>

      {click && <a className="tile-learn-more" id={`tile-id-${index}`} onClick={() => {

        click(index);  // this one!

      }}>Learn More</a>}

  </BlankCard>

);

該行未被覆蓋,因?yàn)閺奈磳?shí)際調(diào)用回調(diào)。onClick


此外,僅僅測試任何函數(shù)是否綁定到它并不是很有用 - 綁定到一個(gè)no-op,比如,甚至綁定到錯(cuò)誤的函數(shù),仍然會(huì)通過。這也是在測試實(shí)現(xiàn),而不是行為。onClick={() => {}}


相反,模擬點(diǎn)擊并確保模擬被調(diào)用:


it('will do the right thing when the Learn More link is clicked', () => {

    const mockOnClick = jest.fn();

    const index = 1;

    const props = { index, icon: 'icon', copy: 'foo', click: mockOnClick };

    const wrapper = shallow(<CardContainer {...props} />);


    wrapper.find('.tile-learn-more').simulate('click');


    expect(mockOnClick).toHaveBeenCalledWith(index);

});


查看完整回答
反對 回復(fù) 2022-08-18
  • 1 回答
  • 0 關(guān)注
  • 105 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號