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

Verify and set list parameter in function of mock object

我有接口 IDatabaseInteraction:

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

AppSectionId 的定义是:

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

我为正在测试的 class 将数据库调用抽象为 IDatabaseInteraction。 该列表出现(在此测试用例中的 appSectionIds 中的 1 项)并在 FillAppSection 方法中更新,Id 被填充。 我想检查 App 和 Section 项的值,其次,我想设置 Id。 我如何使用最小起订量做到这一点?

我通常会将该方法更改为 return a 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