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呈现的异步数据?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 离大谱!别人养猫养狗 网易《逆水寒》玩家
- 下一篇: 钢铁巨兽才是男人的浪漫 《战争雷霆》人气