Moq.Setup не возвращает ожидаемую коллекцию? - PullRequest
1 голос
/ 11 января 2012

У меня есть следующий код:

        var service = new Mock<INavigationService>();

        service.Setup(x => x.GetSchemes(new SchemeFilterEntity())).Returns(new List<SchemeEntity>
            {
                new SchemeEntity
                    {
                        Id = 1,
                        Name = "Test"
                    },
                new SchemeEntity
                    {
                        Id = 2,
                        Name = "Test 2"
                    }
            });

        var sut = service.Object;

        var sut = service.GetSchemes(new SchemeFilterEntity());

Однако, когда вызывается метод GetSchemes, он возвращает ноль?

Есть идеи?

Ответы [ 2 ]

3 голосов
/ 11 января 2012

Я считаю, что должно быть

service.Setup (x => x.GetSchemes (It.IsAny ())). Возвращает .....

потому что в противном случае moq будет искать тот точный экземпляр 'new SchemeFilterEntity ()', который вы передали в методе установки, который никогда не будет соответствовать ничему другому.

Редактировать: Тем не менее, ваш sut должен быть не то, что вы издеваетесь, это должно быть то, что использует ваш издеваются над объектом.

0 голосов
/ 11 января 2012

Я не знаю, что вы пытаетесь проверить, но если вы хотите "переопределить" поведение GetSchema При использовании фиктивного объекта этот метод должен быть virtual в классе

Если вы хотите использовать смоделированный объект для заглушения INavigationService, вы должны сделать следующее

   .........

    var sut = service.Object;

    SomeThing.UseNavigavtionService(sut); //this is supposed to be the class which you will test.Sut is a mocked INavigationService

в вашей настройке вы также должны использовать It.IsAny< SchemeFilterEntity >() вместо создания конкретного объекта

...