Имитация данных из метода при использовании GraphQlTester в тестеJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Имитация данных из метода при использовании GraphQlTester в тесте

Сообщение Anonymous »


Я использую Java Spring Boot 3.2.0 и GraphQL. Для некоторых из моих API-интерфейсов GraphQL мне нужно обратиться к разным клиентам для получения данных. У меня есть контроллер GraphQL, класс обслуживания и класс клиента для этого потока.

Контроллер — это точка входа для моего запроса GraphQL, а класс обслуживания будет обрабатывать конкретную логику, необходимую для запроса. Класс обслуживания вызовет клиентский класс, который будет выполнять работу по обращению к конкретному клиенту за данными. Все, что у меня есть сейчас, — это лишь косточки, но поток останется прежним.

Меня не интересует тестирование клиентского класса, но я хочу протестировать классы контроллера и сервиса. Однако я не знаю, как имитировать данные, возвращаемые из клиентского класса, при использовании GraphQlTester.

Вот классы:

Класс контроллера

@Controller общественный класс CustomerController { частная конечная служба поддержки клиентов; общественный CustomerController (служба CustomerService) { this.service = сервис; } @QueryMapping public List queryCustomer(@Argument Long customerId) { вернуть service.queryCustomer(customerId); } } Класс обслуживания

@Component общественный класс CustomerService { частный окончательный MyClient myClient; общественный CustomerService (MyClient myClient) { this.myClient = мойКлиент; } /*** * Содержит логику для запроса соответствующих клиентов для получения данных о клиенте. * * @param customerId уникальный идентификатор Клиента. * * @return Список клиентов для введенного customerId */ общедоступный список queryCustomer (Long customerId) { вернуть myClient.getCustomerData(customerId); } } И клиентский класс

@Component общественный класс MyClient { общедоступный список getCustomerData (Long customerId) { throw new NotImplementedException("Этот API еще не реализован."); } } Я использую GraphQlTester, чтобы помочь с тестированием, но я хочу иметь возможность возвращать фиктивные данные из MyClient, вместо того, чтобы клиент фактически обращался за данными (кроме того, класс не полностью реализован, поэтому прямо сейчас просто выбрасываю исключение... чего я не хочу для своих тестов)

Вот тестовый класс:

@Import({CustomerService.class, MyClient.class}) @GraphQlTest(CustomerController.class) класс CustomerControllerTest { @Autowired GraphQlTestergraphQlTester; @Тест недействительный testQueryCustomer () { ListockList = новый ArrayList(); ockList.add(new Customer(1234L, "test@test.com", "FirstName", "LastName"); MyClient myClient = макет (MyClient.class); когда (myClient.getCustomerData(1234L)).thenReturn(mockList); graphQlTester.documentName("queryCustomerTest") .выполнять() .path("запросКлиент") .entityList(Клиент.класс) .satisfies(клиенты -> { AssertEquals(customers.size(), 1); }); } } Мой документ GraphQL

запрос queryCustomer($customerId: ID) { queryCustomer (customerId: $customerId) { Пользовательский ИД клиентЭлектронная почта имя фамилия } } И запись о клиенте

публичная запись Клиента( Длинный идентификатор клиента, Строка клиентаEmail, Строковое имя кулака, Строка фамилия ) { } Теперь я понимаю, что мой макет в настоящее время не работает таким образом, поскольку я все еще получаю исключение при выполнении теста:

java.lang.AssertionError: В ответе содержится 1 непредвиденная ошибка из 1. Если ожидается, отфильтруйте их: [[NotImplementedException]: этот API еще не реализован.] Я знаю, что могу отфильтровать ожидаемые ошибки, но я бы предпочел имитировать возвращаемые данные. Как я могу ввести свои фиктивные данные для возврата при вызове MyClient.getCustomerData()? Спасибо!
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»