#java #pact
#java #договор
Вопрос:
Я пытаюсь написать тест на договорный контракт, охватывающий следующий сценарий. У меня есть потребитель, вызывающий GET, чтобы получить информацию о животном, будь то кошка или собака.
response1:
{
"animal" : {
"type" : "Cat",
"meow" : true
}
}
response2:
{
"animal" : {
"type" : "Dog",
"barks" : false
}
}
В коде и Cat, и Dog являются подтипами класса Animal . Есть ли возможность написать контракт, ожидающий ответа, который будет содержать ключ «animal» со значением, соответствующим либо cat (ожидающему свойств «мяу» и «тип»), либо dog (ожидающему свойств «лает» и «тип»).
Другими словами. Есть ли возможность в Dsl Pact объявить, что под ключом «animal» может быть либо объект определения X, либо объект определения Y?
Комментарии:
1. что вы подразумеваете под договором? вы пытаетесь сослаться на условие ?.
2. Я имею в виду структуру тестирования контракта на пакт. Я изменил вопрос, чтобы быть более точным.
Ответ №1:
Нет, вам нужно написать два отдельных теста для этого сценария, чтобы доказать, что ваш код действительно может обрабатывать оба случая. Подумайте, если бы вы написали модульный тест, который принимал an Animal
в качестве аргумента, но вел себя по-разному в зависимости от животного — вам нужно было бы протестировать его со всеми вариантами.
Аргумент аналогичен тому, почему мы не поддерживаем необязательные атрибуты (см. https://docs.pact.io/faq/#why-is-there-no-support-for-specifying-optional-attributes ).