Если нельзя, но очень хочется, то нужно обязательно и ничего в мире не стоит того, чтобы делать из этого проблему!


Интересна Java? Кликай по ссылке и регистрируйся!
Если тебе полезно что-то из того, чем я делюсь в своем блоге - можешь поделиться своими деньгами со мной.
с пожеланием
столько времени читатели провели на блоге - 
сейчас онлайн - 

среда, 18 июня 2014 г.

Увеличиваем читабельность тестов - Assertion объект

Задача простая. Было вот так

    @Test
    public void shouldLogin() throws Exception {
        // when
        String answer = client.send("{\"login\":[\"apofig\",\"password\"]}");

        // then
        assertEquals("{\"login\":true}", answer);
    }

но вот эти вот \" \" совсем не помогают понять код. Было решено сделать как-то вот так.

    @Test
    public void shouldLogin() throws Exception {
        send("{'login':['apofig','password']}").answer("{'login':true}");
    }

Для этого понадобится вот такой вот Assertion объект + его фектори-метод

    public SendAnswer send(String send) {
        return this.new SendAnswer(send);
    }

    class SendAnswer {
        private String send;

        public SendAnswer(String send) {
            this.send = send;
        }

        public void answer(String answer) {
            String expected = client.send(prepareJson(send));
            assertEquals(expected, prepareJson(answer));
        }

        private String prepareJson(String answer) {
            return answer.replaceAll("'", "\"");
        }
    }

Делай свои тесты читабельными.

Комментариев нет:

Отправить комментарий