如何将Dto转换为EntityEntry

问题描述 投票:0回答:1

这是一项学校任务,其中还必须进行单元测试。现在,我们正在对出错的映射存储库进行单元测试。

>无法从'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)));
    }
c# visual-studio unit-testing dto
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.