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

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

為 React 編寫測試的正確方法

為 React 編寫測試的正確方法

MMTTMM 2021-09-04 14:58:13
所以我只是偶然發(fā)現(xiàn)了這個問題。我想問一下解決這個問題的最佳方法。這是我的App.js代碼的相關(guān)部分:addTask = (text) => {    const {tasks} = this.state;    tasks.push({text});    this.setState({tasks});};<AddTaskConfirmBtn    text={        this.state.newTaskValue // This is just a simple state string    }    addTask={        this.addTask    }/>AddTask 測試it('should addTask', function () {    wrapper        .instance()        .addTask('testing');    expect(        wrapper            .state('tasks')    ).toEqual([        {text: 'make todo with hooks'},        {text: 'write tests'},        {text: 'do the daily'},        {text: 'testing'},    ])});AddTaskConfirmBtn 代碼:render() {    return (        <button            onClick={                    this.props                        .addTask // This is the issue. This adds an object to the array. It is solved below            }>            Add task        </button>    );}// 僅供參考。這是我解決問題的方法render() {    return (        <button            onClick={                () => {                    this.props                        .addTask(this.props.text)                }            }>            Add task        </button>    );}這是我的測試:describe('<AddTaskConfirmBtn/>',    function () {        let wrapper;        let addTaskMock = jest.fn();        beforeEach(            function () {                wrapper = shallow(                    <AddTaskConfirmBtn addTask={addTaskMock}/>                );            }        );        it('should addTaskToTasks onClick',            function () {                wrapper                    .find('button')                    .simulate('click');                expect(addTaskMock).toHaveBeenCalledTimes(1);            }        );    })首先我正在學(xué)習(xí)單元測試和TDD,所以請對我的愚蠢感到溫柔。現(xiàn)在我的問題。我正在以上面看到的方式測試我的代碼。所以添加正確的值并將其推送到狀態(tài),然后進(jìn)行比較。AddTaskConfirmBtn 只是檢查該方法是否被調(diào)用。但我剛剛意識到我的測試中沒有考慮到一個錯誤。我將錯誤的東西推入數(shù)組(我相信這是我推入狀態(tài)的事件對象)。我修復(fù)了它,但有趣的是測試沒有發(fā)現(xiàn)它。顯然是因?yàn)槲也皇沁@樣寫的。所以我的問題是,我應(yīng)該擔(dān)心嗎?我應(yīng)該在測試中考慮這樣的情況嗎?或者這只是發(fā)生的事情?或者我應(yīng)該在方法本身中加入保護(hù)措施?喜歡
查看完整描述

1 回答

?
胡說叔叔

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超8個贊

我會說一般的好做法是處理組件內(nèi)部的所有場景,而不是其他組件將發(fā)送的內(nèi)容。例如,在您的情況下,最好測試正在發(fā)送的對象類型。

因此,您可以使用函數(shù) liketoHaveBeenCalledWith來測試發(fā)送的數(shù)據(jù)類型。建立保護(hù)措施始終是一個好主意。


查看完整回答
反對 回復(fù) 2021-09-04
  • 1 回答
  • 0 關(guān)注
  • 161 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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