我有一个依赖于 XmlSerializer 的类。我想模拟 XmlSerializer 来验证它的方法是否被正确调用。但是,因为 Serialize() 和 Deserialize() 方法不是虚拟的,所以 Moq 无法做到这一点。
我认为可行的唯一解决方案是使用虚拟方法编写 XmlSerializer 的外观。就像是 :
public class CustomXmlSerializer
{
private XmlSerializer serializer;
public CustomXmlSerializer(XmlSerializer serializer)
{
this.serializer = serializer;
}
public virtual void Serialize(Stream stream, object o)
{
serializer.Serialize(stream, o);
}
public virtual object Deserialize(Stream stream)
{
return serializer.Deserialize(stream);
}
}
我想知道这是否被认为是好的做法。另外,有没有其他方法可以做到这一点?