Интеграционные тесты для конечной точки RESTEasy - PullRequest
0 голосов
/ 01 апреля 2019

Я хочу выполнить интеграционные тесты на моей конечной точке REST, но у меня возникают проблемы.

Ниже моя конечная точка. ПРИМЕЧАНИЕ: я не могу изменить эту часть кода.

@Path("/people")
public class PersonResource {

    private final PersonService personService;

    @Inject
    public PersonResource(final PersonService personService) {
        this.personService = personService;
    }

    @GET
    @Produces("application/json")
    public List<Person> getPersonList() {
        return personService.getPersonList();
    }
}

Из того, что я смог найти в Интернете, у меня есть следующая базовая структура для моего теста.

public class PersonResourceTest {

    private Dispatcher dispatcher;
    private POJOResourceFactory factory;

    @Before
    public void setup() {
        dispatcher = MockDispatcherFactory.createDispatcher();
        factory = new POJOResourceFactory(PersonResource.class);
        dispatcher.getRegistry().addResourceFactory(factory);
    }

    @Test
    public void testEndpoint() throws URISyntaxException {
        MockHttpRequest request = MockHttpRequest.get("people");
        MockHttpResponse response = new MockHttpResponse();

        dispatcher.invoke(request, response);

        System.out.print("\n\n\n\n\n" + response.getStatus() + "\n\n\n\n\n");
        System.out.print("\n\n\n\n\n" + response.getContentAsString() + "\n\n\n\n\n");
    }

}

Однако это приводит к следующей ошибке в последней строке метода setup.

java.lang.RuntimeException: RESTEASY003190: Could not find constructor for class: my.path.PersonResource

Я изучил API Registry и подумал, что, возможно, мне следовало бы вместо этого использовать addSingletonResource, поэтому я изменил последнюю строку setup на dispatcher.getRegistry().addSingletonResource(personResource); и добавил следующее.

@Inject
private PersonResource personResource;

Но это приводит к NullPointerException в последней строке setup.

Разреженная документация о насмешках не очень полезна. Кто-нибудь может указать, где я иду не так? Спасибо.

...