štvrtok, 3. júla 2008

Moq

Moq je zaujímavá knižnica na vytváranie mock-ov, ktoré často používame pri testovaní, konkrétne pri vytvaraní nepravých (mock) implementácií. Páči sa mi jednoduchosť použitia a taktiež to, že využíva nové vlastnosti .NET 3.5 a jazyka C# 3.0 (lambda expressions, ....). V príklade je ukázené vytvorenie jednoduchej testovacej implementácie rozhrania. Kĺúčovým krokom je vytvorenie očakávaní volaní (expectations) jednotlivých členov tvoriacich rozhranie. Týmto krokom špecifikujeme ako bude vytváraný mock reagovať na volanie jednotlivých členov tvoriacich rozhranie (v tomto príklade sú to metódy). Potom získame referenciu na vytvorený mock ku ktorému pristupujeme cez rozhranie a môžeme sa hrať.


   1:  using System;

   2:  using System.Linq;

   3:  using Moq;

   4:   

   5:  namespace NMarian.MoqDemo

   6:  {

   7:      public interface IWeatherService

   8:      {

   9:          string GetCurrent();

  10:          string GetForecast();

  11:      }

  12:   

  13:      class Program

  14:      {

  15:          static void Main(string[] args)

  16:          {

  17:              var mock = new Mock<IWeatherService>();

  18:              mock.Expect(w => w.GetCurrent()).Returns("Sunny day");

  19:              mock.Expect(w => w.GetForecast()).Returns("Summer storm at evening");

  20:   

  21:              IWeatherService ws = mock.Object;

  22:   

  23:              Console.WriteLine("Current weather: {0}", ws.GetCurrent());

  24:              Console.WriteLine("Weather forecast: {0}", ws.GetForecast());

  25:          }

  26:      }

  27:  }

Žiadne komentáre: