Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何为使用自动映射和依赖注入的.NETCore2.0服务编写xUnit测试?_C#_Unit Testing_Automapper_Asp.net Core 2.0_Xunit - Fatal编程技术网

C# 如何为使用自动映射和依赖注入的.NETCore2.0服务编写xUnit测试?

C# 如何为使用自动映射和依赖注入的.NETCore2.0服务编写xUnit测试?,c#,unit-testing,automapper,asp.net-core-2.0,xunit,C#,Unit Testing,Automapper,Asp.net Core 2.0,Xunit,我对.NETCore/C#编程是新手(来自Java) 我有以下服务类,它使用依赖项注入获取AutoMapper对象和数据存储库对象,用于创建SubmissionCategoryViewModel对象集合: public class SubmissionCategoryService : ISubmissionCategoryService { private readonly IMapper _mapper; private readonly ISubmissionCateg

我对.NETCore/C#编程是新手(来自Java)

我有以下服务类,它使用依赖项注入获取AutoMapper对象和数据存储库对象,用于创建SubmissionCategoryViewModel对象集合:

public class SubmissionCategoryService : ISubmissionCategoryService
{

    private readonly IMapper _mapper;

    private readonly ISubmissionCategoryRepository _submissionCategoryRepository;

    public SubmissionCategoryService(IMapper mapper, ISubmissionCategoryRepository submissionCategoryRepository)
    {

        _mapper = mapper;

        _submissionCategoryRepository = submissionCategoryRepository;

    }

    public List<SubmissionCategoryViewModel> GetSubmissionCategories(int ConferenceId)
    {


        List<SubmissionCategoryViewModel> submissionCategoriesViewModelList = 
            _mapper.Map<IEnumerable<SubmissionCategory>, List<SubmissionCategoryViewModel>>(_submissionCategoryRepository.GetSubmissionCategories(ConferenceId) );

        return submissionCategoriesViewModelList;


    }
}
公共类SubmissionCategoryService:isSubmissionCategoryService
{
专用只读IMapper\u映射器;
private readonly是submissionCategoryRepository\u submissionCategoryRepository;
公共SubmissionCategoryService(IMapper映射器、iSubmissionCategorySepository SubmissionCategorySepository)
{
_映射器=映射器;
_submissionCategoryRepository=submissionCategoryRepository;
}
公共列表GetSubmissionCategories(int ConferenceId)
{
列表提交类别ViewModelList=
_Map(_submissionCategoryRepository.GetSubmissionCategories(ConferenceId));
返回submissionCategoriesViewModelList;
}
}
我正在使用Xunit编写单元测试。我不知道如何为方法GetSubmissionCategories编写单元测试,并让测试类提供IMapper实现和ISubmissionCategoryRepository实现

到目前为止,我的研究表明,我可以创建依赖对象的测试实现(例如SubmissionCategoryRepositoryForTesting),也可以使用模拟库来创建依赖接口的模拟


但我不知道如何创建AutoMapper的测试实例或AutoMapper的模拟实例。

这段代码应该为您提供一个启动:

[Fact]
public void Test_GetSubmissionCategories()
{
    // Arrange
    var config = new MapperConfiguration(cfg =>
    {
        cfg.AddProfile(new YourMappingProfile());
    });
    var mapper = config.CreateMapper();
    var repo = new SubmissionCategoryRepositoryForTesting();
    var sut = new SubmissionCategoryService(mapper, repo);

    // Act
    var result = sut.GetSubmissionCategories(ConferenceId: 1);

    // Assert on result
}

唉,请求非站点资源被认为是离题的。使用模拟库,您可以模拟接口,将它们注入被测主题,并练习被测方法以断言其行为符合预期。演示您如何测试上述代码。从那里,我们应该能够引导您朝着正确的方向前进。下面是一个与您所问问题相近的示例,您已经编辑了该问题,以删除对书籍或教程的明确要求。还请注意,它生成了一个可接受的高质量答案,其中不包括任何此类建议。应该重新打开。以上内容非常有用,足以向我展示如何编写单元测试。我确实需要补充一点);到配置的末尾statement@junkangli你能回答这个问题吗?