C# 我怎样才能避免这个假设?

C# 我怎样才能避免这个假设?,c#,unit-testing,repository,moq,xunit,C#,Unit Testing,Repository,Moq,Xunit,我试图从基础开始,但在理解如何创建此moq对象时遇到困难 public class TestRefMedicalSpecialty { private Mock<IRepository<RefMedicalSpecialty>> mockRefMedicalRepo; public TestRefMedicalSpecialty() { var mockRefMedicalSpecialties = new List<Re

我试图从基础开始,但在理解如何创建此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()
    {

    }
}
公共类TestRefMedicalSpeciality
{
私人模拟mockRefMedicalRepo;
公共测试参考医学专业()
{
var mockRefMedicalSpecialties=新列表
{
新的参考医学专业{Code=“10000”,Description=“Medical Specialty1”},
新的参考医学专业{Code=“10001”,Description=“Medical Specialty2”},
新的参考医学专业{Code=“10002”,Description=“Medical Specialty3”}
};
mockRefMedicalRepo=新建Mock();
mockRefMedicalRepo.Setup(repo=>repo.GetAll()).Returns(mockrefmedicalspecials);
//this.mockRefMedicalRepo=new Mock().Object;
this.mockRefMedicalRepo=mockRefMedicalRepo.Object;
}
[事实]
public void GetAll_返回_数据()
{
}
}
严重性代码说明项目文件行抑制状态 错误CS0266无法将类型“
Aamc.Ret.Data.IRepository
”隐式转换为“
Moq.Mock
”。存在显式转换(是否缺少转换?)Aamc.Ret.UnitTests


Mock.Object
属性返回泛型参数
T
的模拟

因此,在您的示例中,
mockRefMedicalRepo.Object
是一个
i假设
,但您正试图将其分配给一个
Mock
,正如错误消息所述

这里有一个可能的替代方案

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

    }
}
公共类TestRefMedicalSpeciality{
私人电子病历;
公共测试参考医学专业(){
var mockRefMedicalSpecialties=新列表
{
新的参考医学专业{Code=“10000”,Description=“Medical Specialty1”},
新的参考医学专业{Code=“10001”,Description=“Medical Specialty2”},
新的参考医学专业{Code=“10002”,Description=“Medical Specialty3”}
};
var mock=new mock();
mock.Setup(=>\u0.GetAll()).Returns(mockrefMedicalSpecials);
this.mockRefMedicalRepo=mock.Object;
}
[事实]
public void GetAll_返回_数据(){
//将模拟的repo传递到依赖类中,然后
//依赖于调用GetAll的练习测试
}
}

参考以更好地了解如何使用Moq框架。Object属性返回泛型参数的模拟。因此,在您的情况下,
mockRefMedicalRepo.Object
是一个
i假设
,但您试图将其分配给一个
Mock
,正如错误消息所述。这似乎是一个错误。您试图实现的最终目标是什么?参考以更好地了解如何使用Moq框架