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));
