1

Trying to do the Junit 5 E2E functional testing using Micronaut declarative HTTP client.

public interface IProductOperation {
    @Get(value = "/search/{text}")
    @Secured(SecurityRule.IS_ANONYMOUS)
    Maybe<?> freeTextSearch(@NotBlank String text);
}

Declarative micronaut HTTP client

@Client(
    id = "feteBirdProduct",
    path = "/product"
)
public interface IProductClient extends IProductOperation {
}

JUnit - 5 testing

@MicronautTest
public record ProductControllerTest(IProductClient iProductClient) {

    @Test
    @DisplayName("Should search the item based on the name")
    void shouldSearchTheItemBasedOnTheName() {
        var value = iProductClient.freeTextSearch("test").blockingGet();
        System.out.println(value);
    }
}

Controller

@Controller("/product")
public class ProductController implements IProductOperation {
    private final IProductManager iProductManager;

    public ProductController(IProductManager iProductManager) {
        this.iProductManager = iProductManager;
    }


    @Override
    public Maybe<List> freeTextSearch(String text) {
        LOG.info("Controller --> Finding all the products");
        return iProductManager.findFreeText(text);
    }
}

When I run the test, I get a 500 internet server error. I think when I run the test the application is also running. Not sure what is the reason for 500 internal server error.

Any help will be appreciated

enter image description here

Is @Get(value = "/search/{text}") causing the issue ?. If yes how can I solve with the declarative client

Service discovery

application.yml

consul:
  client:
    defaultZone: ${CONSUL_HOST:localhost}:${CONSUL_PORT:8500}
    registration:
      enabled: true

application-test.yml

micronaut:
  server:
    port: -1
  http:
    services:
      feteBirdProduct:
        urls:
          - http://product
consul:
  client:
    registration:
      enabled: false
San Jaisy
  • 15,327
  • 34
  • 171
  • 290

0 Answers0