Mockowanie z ASP.NET Core 1.0. DSP16 – część 6

W poprzednim poście pokazałem jak można stworzyć projekt testowy przy użyciu ASP.NET Core. Tym razem przedstawię jak poradziłem sobie z tworzeniem dodawaniem biblioteki do mockowania w ASP.NET Core. Podobnie jak w przypadku testowania, trzeba pobrać odpowiednią bibliotekę do mockowania, która jest kompatybilna z ASP.NET Core.

Na dzień dzisiejszy udało mi się znaleźć dwie biblioteki, które są kompatybilne: LightMock oraz Moq. Postanowiłem użyć drugiego rozwiązania: Moq. Bardzo przydatny tutorial znalazłem na stronie dotnetlibery.com. Faktyczne instrukcje znalazłem w połowie postu (nagłówek: Setting up Moq on .NET Core).

Na początku musiałem znaleźć NuGet Packages Manager: Tools -> NuGet Package Manager -> Manage NuGet Packages for Solution. Następnie postępowałem zgodnie z tutorialem, aby dodać nowe źródło skąd mogą być dodawane paczki do projektu. Następnie w projekcie testowym w pliku project.json dodałem nowe linijki:

{
  "version": "1.0.0-*",
  "description": "",
  "authors": [ "" ],
  "tags": [ "" ],
  "projectUrl": "",
  "licenseUrl": "",
  "dependencies": {
    "xunit": "2.1.0",
    "xunit.runner.dnx": "2.1.0-rc1-build204"
  },
  "commands": {
    "test": "xunit.runner.dnx"
  },
  "frameworks": {
    "dnx451": {
      "dependencies": {
        "PokerWebsite": "1.0.0-*",
        "Moq": "4.2.1312.1622"
      }
    },
    "dnxcore50": {
      "dependencies": {
        "PokerWebsite": "1.0.0-*",
        "moq.netcore": "4.4.0-beta8"
      }
    }
  }
}

Zmieniłem kod klasy testowej:

using Moq;
using PokerWebsite.Core.Domain;
using PokerWebsite.Core.Repositories;
using Xunit;

namespace PokerWebsiteTests
{
    public class Class1
    {
        [Fact]
        public void PassingTest()
        {
            var mock = new Mock<IPlayerRepository>();
            var player = new Player();
            Assert.Equal(4, Add(2, 2));
        }
    }
}

Skompilowałem projekt, odpaliłem test. Test przeszedł, mockowanie działa.

Podczas gdy próbowałem podpiąć mockowanie pod projekt testowy otrzymywałem różnego rodzaju błędy. Jednym z nich był:

Multiple assemblies with equivalent identity have been imported: and Remove one of the duplicate references.

Podczas gdy co chwilę zmieniałem zależności project.json coś się w końcu popsuło :). Odpowiedź jak rozwiązać ten problem była podana jak na tacy:DSP16-7.1

Wystarczyło w cmd odaplić polecenie ‚dnu restore’.

Leave a Comment

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *