170 похожих чатов

Всем привет! Буду очень благодарен любой помощи! Есть сервис, который отдает

API. Сейчас реализую регистрацию. У меня есть handler, который берет данные пользователя и отправляет их на другой уровень service. Service общается с другим уровнем на котором база данных. Структуру и код могу прислать. Все работает хорошо, но я решил написать тесты. Сделал моки service-а, и тестирую handler. Но вот незадача, у меня в service есть логика(валиден ли пароль, нормальное имя пользователя и тд.), а моки "сьели" всю эту логику. Надеюсь вы поняли меня, я имею в виду, что в моках нет моего кода, только автосгенерированный.

Вопрос: как мне протестировать hendler, чтобы логика в service не пропадала. Или проще - как тестировать?)))

Буду благодарен любому ответу!

8 ответов

17 просмотров

можно тестировать отдельно ручку, отдельно метод сервиса

правильно раздели слои

Igor-Botukhov Автор вопроса
Wingman
можно тестировать отдельно ручку, отдельно метод с...

Хм, но они же работают вместе? Я о том, можно ли протестировать мой Handler через httptest? Вот кусочек кода из тестов. handler := http.HandlerFunc(h.signUp) r, err := http.NewRequest("POST", "/sign-up", strings.NewReader(testCase.inputBody)) if err != nil { t.Error(err) } w := httptest.NewRecorder() handler.ServeHTTP(w, r) а дальше assert

Igor-Botukhov Автор вопроса
Igor Botukhov
Хм, но они же работают вместе? Я о том, можно ли п...

а что ты тут тестировать собрался? тут бизнес кода нет

Igor-Botukhov Автор вопроса
Alexey Gevondyan
а что ты тут тестировать собрался? тут бизнес кода...

так, как бы обьяснить, хммм. В хендлере у меня запрос принимается и отправляется на следующий слой service. Вот код: func (a *AuthService) CreateUser(user structs.User) (int, error) { if !isCorrectPassword(user.Password) { return -1, errors.New("Incorrect password: it must contain at least 8 characters (alphabet, numbers, !@#$%^&*)") } user.Password = generatePasswordHash(user.Password) jsonInfoString, err := json.Marshal(user.Info) if err != nil { return -1, err } user.Info = jsonInfoString return a.repo.CreateUser(user) } И я тестирую через httptest прямо api

Igor Botukhov
так, как бы обьяснить, хммм. В хендлере у меня зап...

isCorrectPassword - это что? глобальная функция какая-то? или в модуле функция? почему она не в a?

Igor-Botukhov Автор вопроса
Alexey Gevondyan
isCorrectPassword - это что? глобальная функция ка...

это функция в service, я просто прислал не весь код service-a, а только метод CreateUser

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта