2016-12-14 1 views
1

Я хочу использовать тест pact, чтобы проверить, может ли поставщик предоставить изображение в ответ. Теперь фактический ответ выглядит следующим образом server response body which contains the pictureКак проверить изображение, содержащееся в ответе с помощью теста pact

Моего Пакт 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.

Что нужно помнить, так это то, что Пакт не предназначен для использования в качестве всего. Он предназначен для соответствия критическим частям вашей системы и определенным ожиданиям от вашего потребителя, т.е. как потребитель, я хочу назвать эту услугу, которая должна дать мне изображение, но мне все равно, что это за изображение, так как я просто показываю его в DOM. Если вам требуется фактическое изображение, которое будет отображаться на стороне потребителя во время тестирования, вы можете использовать запрос сопряжения для решения чего-либо с помощью регулярного выражения, а затем в качестве генератора использовать фактический вывод изображения. Я бы использовал что-то маленькое, хотя, если бы я был вами, поскольку Пакт не предназначен для извлечения мегабайт двоичных файлов.

Смежные вопросы