验证并设置模拟对象函数中的列表参数

本文关键字:列表 参数 函数 对象 设置 模拟 验证 | 更新日期: 2023-09-27 18:16:31

我有和接口IDatabaseInteraction:

public interface IDatabaseInteraction
{
    void FillAppSection(List<AppSectionId> appSectionIds);
}

AppSectionId的定义:

public class AppSectionId
{
    public string App;
    public string Section;
    public int Id;
}

我将被测类的数据库调用抽象为iddatabaseinteraction。列表进入(在这个测试用例中,appSectionIds中的1项)并在FillAppSection方法中更新,Id被填充。我想检查项目App和Section值,其次,我想设置Id。我如何使用moq做到这一点?

验证并设置模拟对象函数中的列表参数

我通常会更改该方法以返回List<AppSectionId>,因为我认为这更清楚。然而,如果你想继续这样做,那么你可以使用Moq Callback方法,像这样:

Mock<IDatabaseInteraction> databaseInteraction = new Mock<IDatabaseInteraction>();
databaseInteraction.Setup(x => x.FillAppSection(It.IsAny<List<AppSectionId>>())).Callback((List<AppSectionId> x) => x.Add(someObject));

Callback方法中,你可以设置List,但是你喜欢。