前提
現在react-nativeでアプリ開発を行なっていますが、対象の文字列をクリップボードでコピーさせる実装を行なっています。
対象のライブラリは「import Clipboard from '@react-native-clipboard/clipboard';」を使用しており、
Clipboard.setString(contactId);
という処理を入れればクリップボードにコピーされるような実装になります。
実現したいこと
jestでmockをし、関数が呼ばれていることの検証を行いたい。
発生している問題・エラーメッセージ
上記の実行をjestでmockし、テストをしたいと思っています。その際に、以下のエラーが発生して解決できません。
TypeError: _clipboard.default.setString is not a function
該当のソースコード
// 関数が呼ばれているかのmock const mockedSetString = jest.fn(); jest.mock('@react-native-clipboard/clipboard', () => { return { ...jest.requireActual('@react-native-clipboard/clipboard'), Clipboard: () => ({ setString: mockedSetString }), }; }); // react-nativeで起こられるエラーのため、以下もmock jest.mock('react-native/Libraries/EventEmitter/NativeEventEmitter'); // 以下がテスト内容 render(コンポーネント読み込み); const copyButton = screen.getByText('対象のボタン名を入れる'); fireEvent.press(copyButton); // spyonも試しましたが、上手くいきませんでした(これもmockしてみた) // const copyToClipboardSpy = jest.spyOn(Clipboard, "setString"); // 以下が検証したいテスト expect(mockedSetString).toHaveBeenCalledTimes(1);
試したこと
・spyonによる検証や、
・jest.mock('@react-native-clipboard/clipboard', () => {
による検証も色々変えたりして試したりしましたが、それでも上手くいかず、、、
・関数ではないと出て、戻り値もvoidなので、jest.fn()が行けないのかな?と思いつつググっても分からず
みたいな状況になります。
大変申し訳ありませんが、助けて頂けると幸いです。
補足情報(FW/ツールのバージョンなど)
"react": "17.0.2",
"react-native": "0.68.2",
"@react-native-clipboard/clipboard": "^1.11.1",
"@testing-library/jest-native": "^4.0.11",
"@testing-library/react-native": "^11.0.0",
"@testing-library/user-event": "^14.4.3",
"@types/jest": "^28.1.8",
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。