PostmanのTestsでResponseの大きな数値が丸められてしまう場合の解決法

PostmanのTestsでResponseの大きな数値が丸められてしまう場合の解決法

問題点

postmanでAPIの動作テストを行なっており、tests内で受け取ったResponseを環境変数に定義する等しておりますが、16桁を超える数値を受け取ろうとした場合に、数値が丸められてしまい、困っておりました。

 

Response値が、「1234567890123456789」の場合、「1234567890123456800」に丸められてしまうような状況。

APIが返すResponseを数値から文字列に変換すれば受け取れるものの、それでは問題解決にはならないため、調べることに。

 

原因

postmanのTestsは、javaScriptで記述することができます。

javaScriptでjsonをparseする際に、16桁を超える大きな数値を含む場合には、丸められてしまうため、json-bigintなどのライブラリを使用する必要があるようです。

 

解決法

これを解決するためには、スクリプトをグローバル変数として格納しておき、evalで評価するような方法があるようです。

 

下記、リンクの内容を全選択し、global変数にセットします。

https://gist.githubusercontent.com/mahasak/8d6ee6f0a5ddd3a9866f8b4df09d4e28/raw/bffae74aa3827ea195c10cf83bce4d78017bdf2d/postman-bigint.min.js

 

 

セットしたスクリプトを評価し、JSON.parseをオーバーライドすることで問題を解決することができます。

eval(pm.globals.get('json-bigint'));
console.log(JSON.parse(responseBody));

 

参考リンク

https://medium.com/i-am-mahasak/hacking-bigint-in-api-testing-with-postman-runner-newman-in-ci-environment-eb69961d16fc

コメントを残す

CAPTCHA