🥣
Node SerialPortでテスト用のモックを作成する方法
この記事について
この記事では Node SerialPort でテスト用のモックを作成する方法について紹介します。
おおまかな手順
おおまかな手順を下記に示します。
- コーディング
- 動作確認
コーディング
下記のコマンドを実行してコーディングの準備をします。
mkdir nodejs-serialport-mock
cd nodejs-serialport-mock
npm init -y
npm install --save serialport
touch main.js
エディタでmain.jsを開いて下記の内容を入力します。
ポイントを下記に示します。
- /dev/ROBOTという名前のテスト用のシリアルポートを作成しています。
- シリアルポートのモック(テストのために指定した通りに振る舞う)クラスを作成しています。
- PINGと送信した時にPONGと受信するようにしています。
- 環境変数SERIAL_PORT_MOCKによってモックの使用を切り替えています。実際のアプリケーションでは
process.env.SERIAL_PORT_MOCK === '1'
としてSerialPortの使用をデフォルトにします。 - シリアルポートを作成しています。
- シリアルポートをオープンしています。
- データを受信した時にPromiseに受信データを送信しています。
- エラーが発生した時にPromiseのエラーを通知しています。
- シリアルポートにPINGと送信しています。
- 受信したデータを文字列にして出力しています。
- シリアルポートを閉じています。
- エラー発生時もシリアルポートを閉じています。finallyを使っても良いですが過去に痛い目にあったので重複して書いています。
動作確認
下記のコマンドを実行してPINGを送信するとPONGを受信することを確認します。
node main.js
実行結果を下記に示します。
send: PING
receive: PONG
おわりに
シリアル通信を扱うアプリケーションでは実機、シミュレーター、ループバックによるテストも有効ですが、モックを使うことですぐにフィードバックを得られるようになりバグの早期発見につながります。この記事がマイコンへのプログラム書き込みを何回も繰り返して疲れた方への救いの手となれば幸いです。最後まで読んでいただきありがとうございました!
Discussion