Как мне сделать этот IRepository? - PullRequest
0 голосов
/ 23 мая 2018

Я пытаюсь начать с основ, но не могу понять, как создать этот объект moq.

 public class TestRefMedicalSpecialty
{
    private Mock<IRepository<RefMedicalSpecialty>> mockRefMedicalRepo;

    public TestRefMedicalSpecialty()
    {
        var mockRefMedicalSpecialties = new List<RefMedicalSpecialty>
        {
            new RefMedicalSpecialty {Code = "10000", Description = "Medical Specialty1"},
            new RefMedicalSpecialty {Code = "10001", Description = "Medical Specialty2"},
            new RefMedicalSpecialty {Code = "10002", Description = "Medical Specialty3"}
        };

        mockRefMedicalRepo = new Mock<IRepository<RefMedicalSpecialty>>();

        mockRefMedicalRepo.Setup(repo => repo.GetAll()).Returns(mockRefMedicalSpecialties);

       // this.mockRefMedicalRepo = new Mock<IRepository<RefMedicalSpecialty>>().Object;
        this.mockRefMedicalRepo = mockRefMedicalRepo.Object;
    }

    [Fact]
    public void GetAll_Returns_Data()
    {

    }
}

Код серьезности Описание Ошибка состояния подавления строки файла проекта CS0266 Невозможно неявно преобразовать тип 'Aamc.Ret.Data.IRepository<Aamc.Ret.Data.Models.RefMedicalSpecialty>' в 'Moq.Mock<Aamc.Ret.Data.IRepository<Aamc.Ret.Data.Models.RefMedicalSpecialty>>'.Существует явное преобразование (вам не хватает приведения?) Aamc.Ret.UnitTests

1 Ответ

0 голосов
/ 23 мая 2018
Свойство

Mock<T>.Object возвращает макет универсального аргумента T.

Так что в вашем случае mockRefMedicalRepo.Object - это IRepository<RefMedicalSpecialty>, но вы пытаетесь присвоить его Mock<IRepository<RefMedicalSpecialty>>, как указано в сообщении об ошибке.

Вот возможная альтернатива

public class TestRefMedicalSpecialty {
    private IRepository<RefMedicalSpecialty> mockRefMedicalRepo;

    public TestRefMedicalSpecialty() {
        var mockRefMedicalSpecialties = new List<RefMedicalSpecialty>
        {
            new RefMedicalSpecialty {Code = "10000", Description = "Medical Specialty1"},
            new RefMedicalSpecialty {Code = "10001", Description = "Medical Specialty2"},
            new RefMedicalSpecialty {Code = "10002", Description = "Medical Specialty3"}
        };

        var mock = new Mock<IRepository<RefMedicalSpecialty>>();

        mock.Setup(_ => _.GetAll()).Returns(mockRefMedicalSpecialties);

        this.mockRefMedicalRepo = mock.Object;
    }

    [Fact]
    public void GetAll_Returns_Data() {

        //pass the mocked repo into a dependent class and 
        //exercise test that relies on calling GetAll

    }
}

Ссылка Быстрый запуск Moq , чтобы лучше понять, как использовать инфраструктуру Moq

...