小编Jus*_*tin的帖子

需要模拟自定义类以进行单元测试

这个问题与我发布的上一个问题有关.

如上所述,我能够将原始代码重构为两个单独的类; 我现在试图通过模拟部分(ExcelManager)来测试不依赖于Office.Interop对象的部分(ParseDataTable).

当我运行测试时,我的模拟对象只是部分工作,正在模拟GetColumnCount方法并在ParseDataTable对象中返回我的局部变量.

但是,未调用GetData模拟方法,而是将代码放入ExcelManager类的GetData方法中

用于创建模拟的代码:

MockExcel = new Mock<ExcelManager>("testfile.xls",0);
        MockExcel.Setup(x => x.GetColumnCount()).Returns(columnCount);
        MockExcel.Setup(x => x.GetData()).Returns(mockData);
        MockExcel.Setup(x => x.Initialize());
Run Code Online (Sandbox Code Playgroud)

columnCount和mockData都是测试的局部变量,包含我基于测试的数据.

我正在测试的课程:

public class ParseDataTable
{
    private const string TableSortOrder = "1 asc, 4 asc, 6 asc";

    public DataTable GetRangeValue(ExcelManager excelManager)
    {
        var columnCount = excelManager.GetColumnCount();
        var sheetData = excelManager.GetData();

        var value = new DataTable();

        for (var j = 1; j <= columnCount; j++)
        {
            value.Columns.Add(j.ToString());
        }

        for (var i = 1; i <= sheetData.GetLength(0); i++)
        {
            var row …
Run Code Online (Sandbox Code Playgroud)

c# unit-testing moq mocking

5
推荐指数
1
解决办法
660
查看次数

标签 统计

c# ×1

mocking ×1

moq ×1

unit-testing ×1