【发布时间】:2022-04-19 22:34:05
【问题描述】:
我目前正在测试一个返回IBuilding 接口实例的方法,定义如下:
public interface IBuilding
{
public string Name { get; set; }
public IBuildingZones Zones { get; set; }
}
public interface IBuildingZones: IList<IBuildingZone>
{
public void SortByElevation();
}
public interface IBuildingZone
{
public string Name { get; set; }
public double Elevation { get; set; }
}
测试Name 值非常容易,但我正在努力寻找测试Zones 以包含一组给定值的最佳方法。
理想情况下,我会这样写:
building.Zones.Should().BeEquivalentTo(
{
{ "garage", 0 },
{ "living_room", 10 },
{ "master bedroom", -4.2 }
}
);
但这显然不能编译。
定义IBuilding 的程序集具有实现IBuildingZone 和IBuildingZones 的公共类,因此我可以像这样使用它们:
var expectedZones = new BuildingZones
{
new BuildingZone("garage", 0),
new BuildingZone("living_room", 10),
new BuildingZone("master_bedroom", -4.2)
};
building.Zones.Should().BeEquivalentTo(expectedZones);
但是我不太乐意使用被测程序集中的类来测试它,尤其是当只需要接口时。
这就是为什么我去寻找一种使用 Moq 框架来模拟 expectedZones 的方法,但我在试图为此找到一个精简的语法时有点卡住了。
任何建议都是最受欢迎的。
【问题讨论】:
标签: c# moq fluent-assertions