В модульном тесте в moq как исправить "Ссылка на объект не установлена ​​для экземпляра объекта" - PullRequest
0 голосов
/ 25 апреля 2018

Хорошо, я пытаюсь создать тест, который проверяет, действительно ли мой метод значков добавил значок в PlayersBadge.Это работает, но я не знаю, как правильно тестировать.Основная проблема - мое понимание moq.

Это мой метод, который использует PlayerID, BadgeID и GameID.

 public bool Badge(int pID, int bID, int gID = 0)
    {
        var list = EliminationDbContext.PlayerBadges.Where(x => x.Badge.BadgeID.Equals(bID) && x.Player.PlayerID.Equals(pID));
        if (list.Any() != true)
        {
            PlayerBadge b = new PlayerBadge { PlayerID = pID, BadgeID = bID, DateEarned = DateTime.Today, GameID = gID };
            _RepoManager.PlayerBadges.Add(b);
            _RepoManager.SaveDb();
            return true;
        }
        return false;
    }

В настоящее время я получаю эту ошибку "Ссылка на объект не установленак экземпляру объекта "Я думаю, это потому, что я не правильно настраиваю макет PlayerBadge, но я не уверен, как это исправить

        [Test]
        public void testing()
        {    //Arrange
            var mock = new Mock<IRepoManager>();
            var mockRequest = new Mock<PlayerBadge>();

            var dManager = new TestMoq(mock.Object);
            //set mockRequest to playerBadge
            mockRequest.Setup(x => x.Badge.PlayerBadges.Add(badge));

            //Act
            //Object reference not set to an instance of an object on this line 
            dManager._RepoManager.PlayerBadges.Add(mockRequest.Object);
            dManager._RepoManager.Badges.Badge(1, 2, 0);

            Assert.That(dManager._RepoManager.PlayerBadges.GetPlayerBadges().Count() >= 1);
}
...