У меня есть сервис Resteasy я хотел бы проверить на работающем сервере (в данном случае я не хочу использовать макет рамки из Resteasy.Mocking классы против сервера работает Resteasy
Однако, я хотел бы для проверки службы без необходимости создания «реальных» данных, поэтому я хотел бы издеваться над некоторыми из классов, которые возвращают данные в службу. Я в основном хочу проверить наличие службы и проверить uri.
Проблема в том, что я возвращаю 404 в случаях, когда данные не существуют и не имеют никакого способа проверить дифференциацию 404 недействительного uri или 404 из идентификатора, который не найден. Мои 404 не являются возвращение любого данные. Например, оба из них даст тот же результат вызывающей стороне:
- http://validuri/123 (не идентификатор не найден, так 404 - никакие данные не возвращаются)
- http://invaliduri/123 (не зарегистрирован URI так 404 - никакие данные не возвращаются)
Поэтому я хочу высмеять мой метод getObject (String id), чтобы вернуть мне действительный объект и перейти дальше.
Я могу использовать mocks, если я вызываю класс сервиса напрямую, однако, если я вызываю службу через HTTP-вызов, mocks не привыкают (вместо этого используются «настоящие» классы).
Например, что-то вроде как это (используя JMockit) ...
@Test
public void someTestMethod(@Mocked final DependencyAbc abc)
{
// mock will get called in this case
// doSomething uses DependencyAbc
new RestClass().doSomething();
...
// "real DependencyAbc" gets called, not the mock.
response = httpClient.get("http://validuri/123");
}
Resteasy класс я пытаюсь тест:
@GET
@Path("/validuri/{id}")
public Response doSomething(@PathParm("id") String id) {
...
myObject = dependencyAbc.getObject(id);
...
if (myObject == null) {
//return 404
}
}
У меня есть несколько других вариантов я могу использовать например, использовать фальшивую структуру resteasy или вернуть некоторые данные с 404 (в настоящее время данные не возвращаются). Однако я хотел бы понять, почему издевательства не вызываются через HTTP-вызовы, и есть ли способ заставить называть насмешки?
Не так ли, что при вызове 'httpClient.get (...)' выполняется фактическая служба на запущенном сервере? Если это так, то он будет использовать unmocked 'DependencyAbc', поскольку все издевательства происходят только внутри JVM клиента. –