У меня есть I контроллер с методом:
public static void softwares() {
List<Software> list = new ArrayList<Software>();
list.add(new Software("soft 1"));
list.add(new Software("soft 2"));
list.add(new Software("soft 3"));
list.add(new Software("soft 4"));
renderJSON(list);
}
У меня есть запись в / conf / маршруты, например:
GET / my-server / softwares Application.softwares
У меня есть функциональный тест, который пытается проверить, правильно ли отвечает служба и возвращает ли она 4 элемента
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
...
@Test
public void softwaresShouldReturnSomething() throws Exception {
Response response = GET("/myserver-server/softwares");
assertNotNull(response); // this is OK
assertIsOk(response); // this is OK
assertContentType("application/json", response); // this is OK
assertCharset("utf-8", response); // this is OK
Document doc = Jsoup.parse(getContent(response));
int fieldsPassedCount = doc.children().first().children().size();
assertTrue(fieldsPassedCount == 4);
}
Когда я отлаживаю ее, переменная 'doc' имеет HTML со своими значениями, но я хочу иметь только JSON. Что я делаю неправильно? и мои поляPassedCount = 2 здесь!.
Вот так выглядит мой ответ в 'doc':
<code><html><head></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">[{"name":"soft 1"},{"name":"soft 2"},{"name":"soft 3"},{"name":"soft 4"}]
Я попытался изменить свои настройки / маршруты следующим образом (добавив формат : 'json' )
GET /my-server/softwares Application.softwares(format:'json')
Итак, как бы вы написали этот тест?