Hejto.pl
Dodaj post

Wpisz coś do wyszukania (minimum 2 znaki)

Wpis użytkownika Dapred w Programowanie

Kompan

w Programowanie

0piorunów

Mam kurde problem z unit testem 😒 Napisałem sobie API i piszę teraz testy dla endpointów. Moq itp pięknie działa, testy się dobrze robią. ALE mam problem z jednym endpointem który teoretycznie zwraca listę DTO. No i tutaj mam problem bo serwis zwraca tę listę jako listę DTO z wartościami albo new List<DTO> z mappera. Kod serwisu to ten o:

var list = _context.MoviesList.Include(x => x.Movies).Where(x => x.UserId == userId).ToList();
return _mapper.Map<List<MoviesListDto>>(list);

A w kontrolerze mam takie cudo:

var list = _userMoviesService.GetLists(GetUserId());
if (list == null)
{
return NoContent();
}
return Ok(list);

I tutaj mam problem bo niestety lista nie jest nullem, więc zamiast oczekiwanego NoContent w teście dostaje Ok wraz z listą która jest pusta xD I po prostu teraz nie wiem, serwis powinien zwracać nulle? Czy returna opakować w jakiś obiekt w stylu ResponseDto gdzie bedzie StatusCode wraz z responsem czy jak to zrobić aby było legitnie + dało się jakoś testować?

Komentarze (2)

Zawodowiec1piorunów

@Dapred warunek:

`if (list == null)`

Zamień na sprawdzenie, czy nie jest pusta. Dziękuję, FV wyślę na priv.

Kompan0piorunów

Dopisze tylko jeszcze, że test wygląda tak:
movieListService.Setup( => _.GetLists(userId)).Returns(MovieListControllerMockData.GetManyMoviesListDtoEmpty());

z czego MovieListControllerMockData.GetManyMoviesListDtoEmpty() zwraca po prostu new List<MoviesListDto>()