Merhaba, çok uzun zamandır bir şeyler yazmıyordum. Tam anlamıyla bir yazı olmasa da bir başlangıç yapmak adına bu küçük paylaşımı yapmak istedim. Bu paylaşımımda EF6 DbContext Mock işlemi için hazırladığım kodu göreceksiniz.
Bilindiği üzere unit test yazmanın en önemli ve en sıkıntılı noktalarından birisi mocklama işlemi. DbContext sınıfınız eğer test edilebilir olarak geliştirilmediyse bu süreç can sıkıcı olabiliyor. Var olan yapınızı da değiştirmek ürkütücü geliyorsa, paylaşmış olduğum kodlar ile çok fazla değişiklik yapmadan DbContext nesnemizi mocklayarak test edilebilir hale getirebilirsiniz.
Mocklama işlemi için Moq kütüphanesinden faydalandım.
Olmazsa olmaz Utility sınıfımız ile kodlar şöyle :)
1 | public class Utility |
Bu metod 2 değişkenli Tuple döndürüyor. MockableDbSetWithExtensions nesnesi ile AddOrUpdate metodlarını test ediyorum. Bunun yerine sadece DbSet nesnesini de kullanabilirsiniz.
Kullanımı
1 | var fakeData = new List<MyDbSet>() |
Bu tanımlamaları yaptıktan sonra test etmek istediğimiz metodun ait olduğu sınıfın yapıcı metoduna parametre olarak DbContext nesnemizi geçmemiz gerekiyor. DI kullanılıyorsa manuel olarak geçmemize gerek yok. Eğer yapımızı çok fazla değiştirmek istemiyorsanız yapıcı metoda parametre geçmek biraz daha kolay olacaktır.
Kaynak
https://docs.microsoft.com/tr-tr/ef/ef6/fundamentals/testing/mocking