在模拟对象的函数中验证和设置列表参数
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
。
我有接口 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
。