【发布时间】:2012-12-13 18:23:49
【问题描述】:
当我在测试中运行以下代码时,
Mock<XmlWriter> mockXmlWriter = new Mock<System.Xml.XmlWriter>();
Language language = Language.GetLangauge(langId);
language.WriteXml(mockXmlWriter.Object);
mockXmlWriter.Verify(writer => writer.WriteAttributeString("ID", language.LanguageID.ToString()));
Moq 抛出以下异常是可以理解的:System.NotSupportedException : Invalid verify on a non-virtual (overridable in VB) member: writer => writer.WriteAttributeString("ID", .language.LanguageID.ToString())。
愚蠢的抽象XmlWriter 仍然有一些非抽象、非虚拟的方法,比如WriteAttributeString() :(
我寻找XmlWriterBase 或System.Xml.Abstractions,就像我寻找HttpContext 和公司一样,但一无所获:(
我将如何克服这个问题,以便我可以测试我的 WriteXml 方法是否正在做它应该做的事情?
【问题讨论】:
-
您是否尝试过创建子类、覆盖方法并将其标记为虚拟>
-
我这样做了,现在
Verify()抱怨WriteAttributeString()永远不会被调用。当我单步执行代码时,显然是:(
标签: c# mocking nunit moq xmlwriter