1

我正在尝试使用 Mock 库测试函数 GetcallEntityBycallEntity (Guid callId)。

这个函数调用另一个没有实现任何接口的类。

受保护的虚拟 CallFacade CallFacade() { return new CallFacade(); }

   public Note GetCallEntityByCallEntity(Guid CallEntity)
   {
        myCall= null;

       **CallFacade**  callFacade = Get CallFacade();

      if (CallEntity!= Guid.Empty)
       {
           myCall = callFacade.GetCallByEntityId(CallEntity);
       }
       return myCall;
   }

CallFacade 不是一个接口

在我的测试中:

[TestInitialize]
    public void TestInitialization()
    {
        IoCMocks.Initialize();
        CommonCallFacadeMock = new CommonCallFacadeMock();
    }
public void GetCallEntityByNoteEntity_GetCall_ReturnValidCall()
    {
        //Arrange
        CallmyNote = GetmyCall(); //private method. == Call.CreateCall();


        //Stubs
        CommonCallFacadeMock.MockCallFacade.Setup(x => x.GetCallByEntityId(ExistingCallEntity)).Returns(myCall);
        //Action
        var obtained = CommonCallFacadeMock.GetCallEntityByCallEntity(ExistingCallEntity);

        CommonCallFacadeMock.MockCallFacade.Verify(x => x.GetCallByEntityId(It.IsAny<Guid>()), Times.Once());


    }
4

1 回答 1

1

您收到此错误消息是因为 MOQ 只能模拟抽象类上的接口、抽象方法或属性、具体类上的虚拟方法或属性。

您必须将方法标记GetCallByEntityId为虚拟方法。

“Moq Discussions”谷歌小组中有一个关于虚拟方法的旧讨论

于 2013-10-12T18:39:19.817 回答