2017-10-21 17 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は実際に上記の機能を実際にテストするのではなく、スパイを使用して呼び出されます。

このエラーは、たとえばjest.mockでハックするScrollViewモックで正しくが侮られていないために発生します。参照:this issue

+0

合意。ネイティブコンポーネントをモックするのを助けるために 'react-native-mock-render'で'酵素 'を使ってみましたが、私はアサーションやスナップショットのために十分なものが見つからず、' jest'と 'テストレンダラー '。それは動く標的です。 React Nativeは 'FlatList'のような新しいコントロールを得て、適切なテストをするなら正しく嘲笑する必要があります。簡単な作業ではありません。 –

関連する問題