2016-12-14 8 views
1

pact testを使用して、プロバイダが応答で画像を提供できるかどうかを確認します。今実際の応答は、この server response body which contains the picturepact testを使用して画像に応答が含まれていることを確認する方法

マイ協定JSONファイルのように見えるこの

"interactions": [ 
 
    { 
 
     "providerState": "there's a user has a portrait tiger.png", 
 
     "description": "Get the user's portrait", 
 
     "request": { 
 
     "method": "GET", 
 
     "path": "/api/Employees/v1/Employee/106656048406528/Attachments", 
 
     "headers": { 
 
      "Content-Type": "application/json", 
 
      "X-Employee-ID": "106656048406528", 
 
      "X-Tenant-ID": "26663977872256", 
 
      "X-User-ID": "1333" 
 
     } 
 
     }, 
 
     "response": { 
 
     "status": 200, 
 
     "headers": { 
 
      "Content-Type": "image/jpeg;charset=UTF-8" 
 
     }, 
 
     "body": "iVBORw0KGgoAAAANSU", 
 
     "matchingRules": { 
 
      "$.body": { 
 
      "match": "type" 
 
      } 
 
     } 
 
     } 
 
    } 
 
    ],

協定のテストは常に失敗し、身体の不一致を言うようになります。私は実際の応答が文字列ではなく、base64形式ではないことを理解できます。いくつかのバイナリファイルが必要です。この場合、バイナリファイルであることを確認するためにどのようにマッチングルールを書くことができますか?

+0

あなたはどの言語を使用していますか? JVM、Ruby、JS ...? –

答えて

2

これを行う方法は、毎回正確なバイナリと実際に一致させたい場合を除いて、ボディを無視することです。

バイナリファイルが送信されると、すでに「Content-Type」と契約しているように、適切なヘッダーが送信されます。本文には必ず一致するルールを追加することができますが、コンテンツについては気にしませんが、 'Content-Length'ヘッダーを見るだけでよいので、これが必要な場合は肯定的ではありませんそれが0より大きいことを確認してください。

Pactは、すべてを一致させるためのものではありません。です。それはあなたのシステムの重要な部分とあなたの消費者からの特定の期待とを一致させることを意味します。消費者として、私はイメージを与えるべきこのサービスに電話したいが、私はDOMにそれを示すので、イメージが何であるか気にしない。テスト中にコンシューマ側で実際のイメージを表示する必要がある場合は、正規表現を使用して何かを解決するために正規表現クエリを使用し、ジェネレータとして実際のイメージ出力を使用することができます。私はPactがメガバイトのバイナリを吐き出すことを意図しているわけではないので、私があなただったら小さいものを使用します。

関連する問題