Json Wrapper

Tak zrobiłem to, zrobiłem wraper na Jsona. Zanim zaczniesz zacieszać, może zerkniesz czemu.
Albo może sam zobaczysz, jak on wygląda i domyślisz się czemu i co takiego mi to ułatwi:

public class JsonWrapperSerializer : ISerializer
{
public T Deserialize<T>(string myQueueItem) => Newtonsoft.Json.JsonConvert.DeserializeObject<T>(myQueueItem);
public string Serialize<T>(T element) => Newtonsoft.Json.JsonConvert.SerializeObject(element);
}

I jak, masz pomysł?

Testowalność

Testy. Testowanie, a właściwie konfigurowanie takiej zależności jest banalnie prosta, nie trzeba mieć inline json czy plików z zserializowanymi danymi. Wystarczy wpis w kodzie (oraz dobra fixtura):

var worker = fixture.MakeSerializerReturnChannelUpdate(description, title)
.GetWorker();
var worker = fixtire.MakeSerializerReturnString(serialized)
.GetWorker();

Profit

Dzięki takiemu zabiegowi mam łatwiejsze podejście do danych, które muszę przygotować, aby testować kod, właściwie nie muszę ich przygotowywać, bo fixtura robi to za mnie i mam YOLO na to.

[Theory, AutoData]
public void SerializerReturnUpdateObjectWhichIsUsedToUpdateChannelInformation(Function4WorkerFixture fixture, string item, string description, string title)
{
var worker = fixture
.MakeSerializerReturnChannelUpdate(description, title)
.GetWorker();
worker.RunAsync(item);
fixture.MockUpdater.Verify(
v => v.Update(It.Is<ChannelUpdate>(p => p.Description == description && p.Title == title)), Times.Once);
}

Nie bójcie się wrapować systemowych zależności, idealnymi pozostałymi kandydatami to DateTime czy Guid

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.