我如何最小化这个 IRepository?

How do I moq this IRepository?

我试图从基础开始,但无法理解如何创建此最小起订量对象。

 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()
    {

    }
}

Severity Code Description Project File Line Suppression State Error CS0266 Cannot implicitly convert type 'Aamc.Ret.Data.IRepository<Aamc.Ret.Data.Models.RefMedicalSpecialty>' to 'Moq.Mock<Aamc.Ret.Data.IRepository<Aamc.Ret.Data.Models.RefMedicalSpecialty>>'. An explicit conversion exists (are you missing a cast?) Aamc.Ret.UnitTests

Mock<T>.Object 属性 returns 通用参数 T 的模拟。

因此,在您的情况下,mockRefMedicalRepo.ObjectIRepository<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 Quickstart 以更好地了解如何使用 Moq 框架