如何模拟返回 List<T> 的方法?

SKN*_*SKN 5 c# unit-testing moq

我有以下方法:

public List<ITestKeyword> AddTests(TestEntity testEntity)
{
    var DesignSteps = new List<ITestKeyword>();
    foreach (var testCase in testEntity.TestCases)
    {
        DesignSteps.AddRange(testCase.GetTestStepKeywords());
    }
    return DesignSteps;
}
Run Code Online (Sandbox Code Playgroud)

其调用方式如下:

var listCount= _TestHelper.AddTests(testEntity).Count;
Run Code Online (Sandbox Code Playgroud)

这是我尝试嘲笑它的方法:

_mockTestHelper
    .Setup(s => s.AddTests(It.IsAny<TestEntity>()))
    .Returns(It.IsAny<List<ITestKeyword>>());
Run Code Online (Sandbox Code Playgroud)

但这似乎不起作用。它抛出空引用异常。我无法弄清楚。有人可以帮忙吗?

Ale*_*lex 3

尝试这个 :

var testList = new List<ITestKeyword>();

_mockTestHelper
    .Setup(s => s.AddTests(It.IsAny<TestEntity>()))
    .Returns(testList);
Run Code Online (Sandbox Code Playgroud)

这样您就可以根据需要填充列表