[解決済み] テストごとにJestのモック関数の戻り値を変更するには?
2022-11-04 01:39:56
質問
私のコンポーネントテストファイルには、次のようなモックモジュールがあります。
jest.mock('../../../magic/index', () => ({
navigationEnabled: () => true,
guidanceEnabled: () => true
}));
これらの関数は、ある特定の機能を隠したり表示したりするために、コンポーネントのレンダー関数で呼び出されます。
これらのモック関数の戻り値の異なる組み合わせでスナップショットを取りたいと思います。
次のようなテストケースがあるとします。
it('RowListItem should not render navigation and guidance options', () => {
const wrapper = shallow(
<RowListItem type="regularList" {...props} />
);
expect(enzymeToJson(wrapper)).toMatchSnapshot();
});
このテストケースを実行するために、モックモジュールの関数の戻り値を
false
のように動的に変更したい。
jest.mock('../../../magic/index', () => ({
navigationEnabled: () => false,
guidanceEnabled: () => false
}));
をインポートしているので
RowListItem
コンポーネントをインポートしているので、モックモジュールが再びインポートすることはないでしょう。
どのように解決するのですか?
スパイを返すようにモジュールをモックして、テストにインポートすればよいでしょう。
import {navigationEnabled, guidanceEnabled} from '../../../magic/index'
jest.mock('../../../magic/index', () => ({
navigationEnabled: jest.fn(),
guidanceEnabled: jest.fn()
}));
そして、後で実際の実装を変更する際には
mockImplementation
navigationEnabled.mockImplementation(()=> true)
//or
navigationEnabled.mockReturnValueOnce(true);
そして次のテストでは
navigationEnabled.mockImplementation(()=> false)
//or
navigationEnabled.mockReturnValueOnce(false);
関連
-
[解決済み] エラー: 未定義のプロパティ 'map' を読み取ることができません。
-
[解決済み】Reactでclsxを使用する方法
-
[解決済み] Apolloクライアントでログアウトした後、ストアをリセットする
-
[解決済み] React テキストを挟んだ横長の仕切りを作る
-
[解決済み] material-ui-pickers KeyboardDatePicker をモーメントで使用するには?
-
[解決済み] Jestを使用して単一のテストを実行するにはどうすればよいですか?
-
[解決済み] TypeError: reactjs の未定義のプロパティ 'status' を読み取ることができません。
-
[解決済み] React の open mailto E-Mail クライアントの onClick で textarea から本文を取得する。
-
[解決済み] Jestを使用して1つのファイルをテストするにはどうすればよいですか?
-
[解決済み] React」は定義される前に使用されていた
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】<Router>の外側で<Link>を使用してはならない
-
[解決済み] Jestの `beforeEach` グローバルは何のためにあるのですか?
-
[解決済み] ReactJS giving error Uncaught TypeError: Super expression は null か関数でなければならず、undefined ではありません。
-
[解決済み] jest: テストスイートの実行に失敗しました。予期しないトークンのインポート
-
[解決済み] React + TypeScript のエラーです。この呼び出しにマッチするオーバーロードがありません
-
[解決済み] MUI Boxは何のためのコンポーネントですか?
-
[解決済み] react.jsでng-ifに相当するものは何ですか?
-
[解決済み] react-router-domを使用する際に「Function components cannot be given refs」を回避する方法は?
-
[解決済み] React QueryとReduxの主な違いは何ですか?
-
[解決済み] React」は定義される前に使用されていた