LoginSignup
1
0

More than 3 years have passed since last update.

ioredis-mockをJestで使う

Posted at

はじめに

Redis用ライブラリのioredisを楽にモックしたくて探したところ、ioredis-mockというそれらしいライブラリを発見しました。
これをJestで使おうとしたところ、ちょっとハマったのでやり方を書こうと思います。

準備

npmまたはyarnでioredis-mockを追加します。

npm install -D ioredis-mock

または

yarn add -D ioredis-mock

使い方

以下では単純にioredisのインスタンスをioredis-mockにすげ替えています。

// mock関数でioredisを自動モック
jest.mock('ioredis');
// 自動モックの後にrequireで読み込む
const Redis = require("ioredis");
const RedisMock = require("ioredis-mock");

test('test', async () => {
  // redisが返す値をdataキーがトップのJSON形式で定義
  const data = { data: {'hoge': 'fuga'} };

  // redisが返す値をRedisMockコンストラクターに渡す
  // この設定はioredisには存在しない
  const redisMock = new RedisMock(data);

  // 自動モックされているioredisからmockImplementation()を呼び出し、
  // redisMockインスタンスを返却させる
  Redis.mockImplementation(() => redisMock);

  // ioredisを使う処理を含む何らかのテスト
  ...

おわりに

ioredis-mockよりもJestの使い方が分からなくてハマってしまいました。
requireの前にmockを呼んで、mockImplementation()でインスタンスをすげ替えればいいという、
分かってしまえば単純なことでした。

リンク

ioredis-mock
https://github.com/stipsan/ioredis-mock

Jest
https://jestjs.io/ja/

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0