如果我使用 WCF 服务,则会生成以下示例客户端代码:
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
[System.Runtime.Serialization.DataContractAttribute(Name="ServiceFault", Namespace="http://schemas.xxx.com/2014/07/Contracts/Faults")]
[System.SerializableAttribute()]
internal partial class ServiceFault : MyProject.Client.WCFService.Fault { ... }
此代码是internal
故意生成的 - 它并不意味着可以在程序集之外访问。
例如,如果我有一个包含以下代码的单元测试(该 URL 是故意无效的,它没有被这个问题屏蔽):
MyClientWrapper.Connect("http://invalidurl.com/endpoint/service.svc")
它将抛出类型异常System.ServiceModel.FaultException<MyProject.Client.WCFService.ServiceFault>
。我遇到的问题是,当我定义单元测试时:
[TestMethod]
[ExpectedException(typeof(FaultException<MyProject.Client.WCFService.ServiceFault>))]
public void ShouldFail() { ... }
令牌MyProject.Client.WCFService.ServiceFault
无效,因为它被定义为internal
(再次,故意)。
那么我怎么能期望我正在测试的程序集内部类型的异常呢?