Соответствующие потоки - PullRequest
0 голосов
/ 29 октября 2018

У меня есть функция, назовем ее F1, которая возвращает один и тот же файл в виде двух потоков:

* def aPdf1 = read('classpath:pdf.pdf')
* def aPdf2 = read('classpath:pdf.pdf')
* def out = { one: aPdf1, two: aPdf2 }

Когда я вызываю F1 из другой функции, скажем, F2, и сравниваю потоки, они не совпадают:

* def out = call read('F1.feature')
* match out.aPdf1 == out.aPdf2

и ошибка:

com.intuit.karate.exception.KarateException: непредвиденный тип: класс java.io.BufferedInputStream

Это ошибка? Или это еще не реализованная функция?

PS1: Если я добавлю следующую строку в F1, она сама успешно завершится:

* match aPdf1 == aPdf2

PS2: Используя код из ответа на этот вопрос , я смог сопоставить потоки в F2.

1 Ответ

0 голосов
/ 29 октября 2018

Проблема в том, что вы создали недопустимый JSON, в котором в качестве значений используются двоичные потоки. Просто придерживайтесь сравнения потоков с потоками - что будет работать, как вы уже видели. Если вам нужно преобразовать PDF в строку, вы можете сделать это:

* string aPdf2 = read('classpath:pdf.pdf')

Также, возможно, вы пропустили разницу между встроенными выражениями и «вложенным javascript». Вы хотели это сделать?

* def out = ({ one: aPdf1, two: aPdf2 })

или

* def out = { one: '#(aPdf1)', two: '#(aPdf2)' }

Также для получения дополнительной информации о JSON и двоичных значениях - см. Этот ответ: https://stackoverflow.com/a/52541026/143475

РЕДАКТИРОВАТЬ: поэтому, если вы хотите сравнить два потока, вы должны сначала преобразовать их в байтовые массивы. Попробуйте это, и вы можете использовать собственную реализацию преобразователя потока в байты:

* def Utils = Java.type('com.intuit.karate.FileUtils')
* def stream1 = read('karate-logo.png')
* def bytes1 = Utils.toBytes(stream1)
* def stream2 = read('karate-logo.png')
* def bytes2 = Utils.toBytes(stream2)
* assert java.util.Arrays.equals(bytes1, bytes2)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...