2017-10-21 12 views
0

저는 효소 반응 네이티브 플랫리스트로 테스트하려고합니다. 나는 올바른 기능 목록이 마지막에 도달 할 때 호출되어 있는지 확인하려면 :시험은 효소가있는 네이티브 플랫리스트에 반응합니다

import { listIsAtTheEnd } from "./actions"; 
import { mount } from "enzyme"; 
jest.mock("./actions"); 


describe("Main page",() => { 
    if("Calls listIsAtTheEnd when FlatList reaches the end",() => { 
     var app = mount(<App />); 
     var container = app.find("FlatListContainer"); 
     var fList = container.childAt(0); 
     fList.instance().scrollToEnd(); 

     expect(listIsAtTheEnd.mock.calls).toHaveLength(1) 
    }) 
}) 

을하지만 이것은 내가 갖는 것입니다 : 내가 잘못 뭐하는 거지

TypeError: this._scrollRef.scrollTo is not a function 

    at VirtualizedList.scrollToEnd (node_modules/react-native/Libraries/Lists/VirtualizedList.js:219:17) 
    at FlatList.scrollToEnd (node_modules/react-native/Libraries/Lists/FlatList.js:544:141) 
    at Object.<anonymous> (src/components/forumPage/__tests__/forumPageTests.js:81:21) 
    at tryCallTwo (node_modules/promise/lib/core.js:45:5) 
    at doResolve (node_modules/promise/lib/core.js:200:13) 
    at new Promise (node_modules/promise/lib/core.js:66:3) 

? 이것을 테스트하는 올바른 방법은 무엇입니까?

답변

3

매우 단순한 얕은 렌더링과 스냅 샷 콤보를 넘어 서면 효소로 반응 원주민을 테스트 할 수는 없습니다.

나는 또한 테스트에서 행동

을하는 FlatList 같은 뭔가를 렌더링하는 데 훨씬 더 신뢰할 수있는 Test Renderer를 사용하여 통과하고 호출 발견했습니다 위의 지금까지 내가 올바른을 확인했습니다, 까다로운 일이 될 것입니다 API는 실제로 위의 기능을 테스트하기보다는 스파이를 사용하여 호출됩니다.

scrollTo이 (가) jest.mock과 같이 해킹 할 수있는 ScrollView 모의 모형을 올바르게 조롱하지 않았기 때문에이 오류가 발생합니다. 참조 : this issue

+0

동의. 네이티브 컴포넌트를 조롱하는 데 도움을주기 위해'react-native-mock-render'로'효소'를 사용하려고 시도했지만 조롱 된 컴포넌트가 주장이나 스냅 샷을 위해 충분히 완전하지 않았고'jest'와'react- 테스트 렌더러 '. 그것은 움직이는 표적입니다. React Native는 'FlatList'와 같은 새로운 컨트롤을 얻게되며, 적절한 테스트를 수행하려면 제대로 조롱해야합니다. 쉬운 일은 아닙니다. –