JavaScript

【mocha】非同期処理のテストの書き方その2【Promise】

どうも、つよぽんです!

今回は、mochaで「Promiseを使って非同期処理の機能をテストする方法」について解説していきます。

非同期処理のテストを書く方法は大きく分けて次の2通りの方法があります。

  1. コールバック関数を使う
  2. Promiseを使う

今回の記事では「②Promiseを使う」でのテスト方法を解説します。

「①コールバック関数を使う」方法は前回記事「【mocha】非同期処理のテストの書き方その1【コールバック関数】」で解説しました。

今回の記事の内容は以下の解説記事でも使っているスライドの内容をさらに詳しく解説したものとなります。

あわせて読みたい
【mocha】非同期処理のテストを書く②【Promiseを使う】前回に続き今回もmochaを使った非同期処理の機能をテストする方法を学習します。前回はコールバック関数を使った非同期テストの方法を解説しました。今回はもう1つのPromiseを使った非同期テストの方法を解説します。...

今回の記事は次のような方に向けて書きました。

想定読者
  1. 既にmochaを使ってテストコードを書いたことがある
  2. 非同期処理の機能をテストしたい

この記事を読み終えた後のあなたは次のことがわかるようになっています。

この記事を読み終えた後のあなた
  • コールバックを使って、非同期処理の機能をテスト出来るようになる

それでは以下の内容で話を進めていきます。

今回の内容
  1. 「it」にセットするコールバック関数の戻り値にPromiseオブジェクトを返す
  2. 非同期処理のテストの挙動を確かめる (サンプル画像付き)

「it」にセットするコールバック関数の戻り値にPromiseオブジェクトを返す

前回記事のおさらい(コールバックを使う方法)

前回記事では「【mocha】非同期処理のテストの書き方その1【コールバック関数】」非同期処理の機能をテストするには、itの第2引数にセットするコールバック関数に引数をセットすることを解説しました。

そして、引数名は慣例的に「done」として、この引数doneは「関数」になり、非同期処理のテストが全部終わったタイミングで「done関数」を実行するものでした。

コールバックを使った非同期テストの型は以下の画像にまとめたのでそちらを参考にしていただけたらと思います。(※画像をクリックすると別タブで画像が開きます。)

前回記事で説明したコールバックを使う場合の書き方前回記事で説明したコールバックを使う場合の書き方

今回のメインの内容(Promiseを使う方法)

非同期テストのもう1つの方法である「Promiseを使う」方法では、itの第2引数のコールバック関数に引数はセットしません。

その代わりにitの第2引数のコールバック関数の戻り値に「Promiseオブジェクト」を返すようにします。

以下の画像にPromiseを使った非同期テストの書き方をまとめたので、そちらを参考にしていただけたらと思います。(※画像をクリックすると別タブで画像が開きます。)

Promiseを使って非同期処理のテストを行う場合の書き方(Promiseオブジェクトをreturnする)Promiseを使って非同期処理のテストを行う場合の書き方(Promiseオブジェクトをreturnする)

それでは、次の章で具体的なサンプルコードを使って、Promiseの非同期テストの挙動を見ていきたいと思います。

非同期処理のテストの挙動を確かめる (サンプル画像付き)

以下の画像に、「Promiseオブジェクトをreturnしたテストコード」「実行結果」「各コードの処理の説明」をまとめたので、画像を拡大してコードの流れを追っていただけたらと思います。(※画像をクリックすると別タブで画像が開きます。)

Promiseオブジェクトを使ってテストを非同期テストを行ったサンプルPromiseオブジェクトを使ってテストを非同期テストを行ったサンプル

ここで行っていることを簡単にまとめると、次のようになります。

  1. AsyncMath.addメソッドは非同期処理を行い、Promiseオブジェクトを返す
    (画像左側のコード)
  2. Promiseオブジェクトのthenメソッドは、Promiseオブジェクトを返す
  3. つまり、AsyncMath.add(1, 2).then(result  => {…})はPromiseオブジェクトを返す
  4. つまり、「return AsyncMath.add(1, 2).then(result  => {…})」を行うことによって、itの第2引数のコールバック関数はPromiseオブジェクトを返す
  5. Promiseオブジェクトがresolveになったらテストが終了する

上記の流れが理解できたら、Promiseでの非同期テストが出来るようになったと言っても良いでしょう。

まとめ

今回の話をまとめると次のとおりです。

今回のまとめ
  • Promiseを使った非同期テストでは、itの第2引数のコールバック関数でPromiseオブジェクトをreturnすれば良い
  • Promiseオブジェクトがresolveになったらテストが終了する

今回の内容は以下の記事内のスライドの補足資料として作成しました。スライドの全部を確認したい方は以下の記事も参照して頂けたらと思います。

あわせて読みたい
【mocha】非同期処理のテストを書く②【Promiseを使う】前回に続き今回もmochaを使った非同期処理の機能をテストする方法を学習します。前回はコールバック関数を使った非同期テストの方法を解説しました。今回はもう1つのPromiseを使った非同期テストの方法を解説します。...
【3つの特典付き】Webエンジニアに必要な基礎スキルを体系的に効率良く身につけたいですか?

LINE登録で無料特典を受け取る

次のような方向けに、学習をサポートするコンテンツを無料プレゼントしています。

  • Webエンジニアになりたいけど何から学習を始めれば良いかわからない
  • 今まで独学で頑張ってきたけど、独学に限界を感じてきた
  • プログラミングは出来るけど、大きめのコードが書けない

「プレゼント詳細が知りたい」「プレゼントを受け取りたい」といった方は、以下のボタンをクリックして詳細ページをご確認ください。

無料特典を受け取る

 

COMMENT

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です