Witam podczas pisania testów jednostkowych często sprawdzam zawartość Json lub ResultWrapper oraz innych kontenerów do którego zmiennych nie ma dostępu bezpośrednio.
I tu pojawia się pytanie czy sprawdzać dane na sztywno czy "zmiennie".
Chodzi o coś takiego:
Przykład 1.
return this.Json(new { success = true });
// sprawdzić to tak:
Assert.Equal("{ success = True }", jsonResult.Data.ToString();
// Czy tak: (pomijając rzutowanie i wyodrębnianie zmiennych(nie wiem jak to zrobić)
Assert.True(jsonResult.Success);
Przykład 2:
return this.Json(new { success = false, message = Resources.Global.ErrorOccurred });
// sprawdzić tak:
Assert.Equal("{ success = True, message = Wystąpił błąd proszę spróbować ponownie. }"
// Czy tak:
Assert.True(jsonResult.Success);
Assert.Equal(Resources.Global.ErrorOccurred, jsonResult.Message);
Sprawa jest dość trudna w pierwszym przypadku na sztywnie ponieważ nie zawsze wiem jaki będzie wynik np. message lub innych kontenerów więc odpalam debugger i kopiuje zawartość z aktualnych danych.
Sprawa w przypadku drugim wygląda ładniej i nie obawia się zmian ale nie zawsze potrafie wyłuskać dane z Jsona lub innych kontenerów poprzez rzutowanie lub cokolwiek.
Więc jak wy robicie?