API 呼び出しの応答をアサートするために RegEx を使用していますが、現在は少し「貪欲」すぎて、あらゆる種類の応答に一致してしまいます。応答内の実際の ID は毎回異なるため、RegEx ビットが必要です。
正規表現のアサーションは次のとおりです。
{data:\[{"name":"Mat","~id":"(.*)"},{"name":"Laurie","~id":"(.*)"}\]},"something":true}
次の正しい応答に一致するもの:
{data:[{"name":"Mat","~id":"4fd5ec146fc2ee0fff234234"},{"name":"Laurie","~id":"4fd5ec146fc2ee0fff234227"}]},"something":true}
この誤った応答と同様に:
{data:[{"name":"Mat","~id":"4fd5ec146fc2ee0fff234234"},{"name":"Laurie","~id":"4fd5ec146fc2ee0fff234227"},{"name":"John","~id":"4fd5ec146fc2ee0fff234237"},{"name":"Paul","~id":"4fd5ec146fc2ee0fff234238"},{"name":"George","~id":"4fd5ec146fc2ee0fff234239"}]},"something":true}
2 つ目(.*)
は、2 つ目のアイテムの ID と一致するだけでなく、IDと他のすべての不要なオブジェクトも一致しています。
したがって、フィールドに関しては、正規表現をもう少し厳密にする必要があると思い~id
ます。(.*)
ID は常に 24 文字の 16 進数なので、より適切なものに置き換えたいと思います。
- これをGoで書いているので、Go のRegExpパッケージを使用しています。
- そしてhttp://regexpal.com/を使用して正規表現をテストしています