c# - 在测试派生类时模拟基属性
问题描述
假设我有两个类:
public class Class { }
public class ClassParser
{
public virtual string ParsedClass { get; }
public ClassParser(Class c1)
{
ParsedClass = DoParsing(c1);
}
private string DoParsing(Class c1)
{
return "Class parsed";
}
}
public class SpecialClassParser : ClassParser
{
public override string ParsedClass => SwitchIdx();
private readonly int _suffixIdx;
public SpecialClassParser(Class c1, int suffixIdx)
: base(c1)
{
_suffixIdx = suffixIdx;
}
private string SwitchIdx()
{
return _suffixIdx switch
{
1 => (base.ParsedClass + " With case 1 suffix"),
2 => (base.ParsedClass + " With case 2 suffix"),
_ => null
};
}
}
通过此功能演示:
private void DoParsings()
{
Class c1 = new Class();
string withClassParser = (new ClassParser(c1)).ParsedClass;
// "Class parsed"
string withSpecialClassParser_1 = (new SpecialClassParser(c1, 1)).ParsedClass;
// "Class parsed With case 1 suffix"
string withSpecialClassParser_2 = (new SpecialClassParser(c1, 2)).ParsedClass;
// "Class parsed With case 2 suffix"
}
我想测试派生类属性,以便派生类在初始化后正确处理基类属性。我希望能够模拟基本属性解析。
模拟设置的伪代码:
Mock<SpecialClassParser> specialParser = new Mock<SpecialClassParser>(c1, 1);
specialParser.Setup(p => p.ParsedClass_InBaseClass)
.Returns("Base class did a lot of calculations on c1 and came up with this parsed string");
有没有办法让它发生?感谢您的帮助。
解决方案
推荐阅读
- c++ - C++ 同步和原子软件事务内存
- javascript - 如何在 ReactJS 中单击按钮重定向
- javascript - 由于类型不正确,Prisma 更新功能失败
- google-cloud-build - 修补 CloudBuild 触发器
- javascript - 在JavaScript中的对象函数中删除对象的引用本身
- json - 通过控制器传递 json
- vba - 过去 12 个月的总成本 MS Access VBA
- html - 为什么 Chrome 会认为我的表单是信用卡表单?
- swiftui - 在 SwiftUI 中正确组合 TabView 与 PageTabViewStyle、NavigationView 和 ScrollView
- json - Flutter http 获取json数据