这是一项学校任务,其中还必须进行单元测试。现在,我们正在对出错的映射存储库进行单元测试。
>无法从'Altus.PracticeFirms.Test.API.TestDto'转换为'Microsoft.EntityFrameworkCore.ChangeTracking.EntityEntry'Altus.PracticeFirms.Test
过去半天来我们一直在看这段代码,欢迎您提供任何帮助。
public class TestDto : DtoBase
{
}
public class TestEntity : EntityBase
{
}
public class MappingRepositoryTests
{
[Fact]
public void Add_TestClassObjectPassed_ProperMethodCalled()
{
// Arrange
var testObject = new TestDto();
// setup imapper mock
var mockMapper = new Mock<IMapper>();
mockMapper.Setup(x => x.Map<TestEntity>(It.IsAny<TestDto>()))
.Returns((TestDto testDto) =>
{
var testEntity = new TestEntity()
{
Id = testDto.Id
};
return testEntity;
});
// setup Db mock
var context = new Mock<WebshopServiceContext>();
var dbSetMock = new Mock<DbSet<TestDto>>();
context.Setup(x => x.Set<TestDto>()).Returns(dbSetMock.Object);
dbSetMock.Setup(x => x.Add(It.IsAny<TestDto>())).Returns(testObject);
// setup repository
var repository = new MappingRepository<TestEntity, TestDto>(context.Object, mockMapper.Object);
//// Act
repository.Add(testObject);
//Assert
context.Verify(x => x.Set<TestDto>());
dbSetMock.Verify(x => x.Add(It.Is<TestDto>(y => y == testObject)));
}