我正在兜圈子试图找出这个错误。我正在使用最小起订量框架执行模拟测试。测试代码为
[TestFixture]
[ServiceContract]
public class UnitTest1
{
private ServiceHost host;
[Test]
public void TestMethod()
{
Mock mk = new Mock<ChatInterfaces.IChatService>();
host = new ServiceHost(mk);
host.AddServiceEndpoint(typeof(IChatService), new NetTcpBinding()
, "net.tcp://localhost:8080/ChatService");
host.Open();
Console.WriteLine("Testing");
App.Config 文件具有以下绑定(bind)
<system.serviceModel>
<services>
<service name="ChatInterfaces.IChatService">
<endpoint address="net.tcp://localhost:8080/ChatService" binding="netTcpBinding" bindingConfiguration="BindingConfiguration" name="ChatServiceEndPoint" contract="ChatInterfaces.IChatService">
</endpoint>
</service>
</services>
<bindings>
<netTcpBinding>
<binding name="BindingConfiguration" transferMode="Buffered"/>
</netTcpBinding>
</bindings>
</system.serviceModel>
当我运行它时,出现以下错误。
Result Message: System.InvalidOperationException : The contract name 'ChatInterfaces.IChatService' could not be found in the list of contracts implemented by the service 'Moq.Mock`1[[ChatInterfaces.IChatService, ChatInterfaces, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'.
我在这里做错了什么以及如何解决它?谢谢
最佳答案
尝试使用 mk.Object
实际得到 IChatService
实现,而不是 Mock<T>
对象。
Mock<ChatInterfaces.IChatService> mk = new Mock<ChatInterfaces.IChatService>();
host = new ServiceHost(mk.Object);
关于c# - Mock 测试时找不到合约名称。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14927780/