日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

jest测试ajax,ajax – 如何使用Jest来测试React呈现的异步数据?

發布時間:2023/12/13 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 jest测试ajax,ajax – 如何使用Jest来测试React呈现的异步数据? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我正在使用React for render和Jest / Jasmine進行測試.我使用舊的Jest / Jasmine等待測試并運行,但現在這些已經在Jasmine 2中消失了,我不知道如何用新的asyncs替換.

在我的代碼中,React呈現了一個關于用戶的小頁面.該頁面有一個AJAX調用來獲取用戶帖子.我想測試一下用戶的帖子回來了,并且waitsFor非常非常擅長:等到用戶有一些帖子,然后繼續.

我在網上看了很多人談論在Jest測試中使用AJAX調用,這不是我想要的.我的Jest測試不知道正在進行AJAX調用,所以我需要一種等待結果返回的方法.

這是我當前使用waitsFor和運行的代碼:it('loads user post', () => {

var page = TestUtils.renderIntoDocument(

);

waitsFor(() => {

return page.state.posts.length > 0;

}, "post loaded", 10000);

runs(() => {

var posts = TestUtils.scryRenderedDOMComponentsWithClass(page, 'post');

expect(posts.length).toEqual(10);

});

});

如何刪除waitsFor并運行并替換有效的Jasmine 2.0代碼?所有Jest測試都知道在預期任何事情之前,page.state.posts.length必須大于0.

最佳答案 您應該將此測試重構為兩個單元測試,以便對您的代碼進行更嚴格的測試.它將使測試更加獨立,并有助于在更精確的范圍內識別錯誤.這些并不準確,因為我不知道你的代碼是什么樣的,但是這里有一些我希望看到的內容: –it('generates the expected properties for a page', function () {

var page = TestUtils.renderIntoDocument(

);

expect(page.someProperty).toBeDefined();

expect(page.user).toEqual('fizzbuzz');

});

it('generates the correct number of posts from a given page object', function () {

var fakePage = {

// put your fake mock data here that TestUtils expects

};

var posts = TestUtils.scryRenderedDOMComponentsWithClass(fakePage, 'post');

expect(posts.length).toEqual(10);

});

我不太確定你的renderIntoDocument函數中發生了什么,所以頂級測試可能有點破壞……看起來函數內部有太多內容,或者你需要測試函數正在進行的調用.如果你詳細說明它的作用,我將編輯答案.

總結

以上是生活随笔為你收集整理的jest测试ajax,ajax – 如何使用Jest来测试React呈现的异步数据?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。