我如何最小化这个 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.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 Quickstart 以更好地了解如何使用 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()
{
}
}
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.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 Quickstart 以更好地了解如何使用 Moq 框架