C# 如何使用Moq.mock或Rhino.mock模拟objoutlookaplication.Session.Stores

C# 如何使用Moq.mock或Rhino.mock模拟objoutlookaplication.Session.Stores,c#,moq,outlook-addin,rhino-mocks,C#,Moq,Outlook Addin,Rhino Mocks,我正在使用c代码开发Outlook Addin。我正在为下面列出的方法编写一个单元测试用例。我一度陷入困境 有人能帮我为下面列出的方法编写一个单元测试用例吗 示例代码: Public bool IsMyPstStoreIsAvailable(string strStoreID) { foreach (Store objStore in ObjOutlookApplication.Session.Stores) { if(objStore.StoreID == strStor

我正在使用c代码开发Outlook Addin。我正在为下面列出的方法编写一个单元测试用例。我一度陷入困境

有人能帮我为下面列出的方法编写一个单元测试用例吗

示例代码:

Public bool IsMyPstStoreIsAvailable(string strStoreID)
{
  foreach (Store objStore in ObjOutlookApplication.Session.Stores)
  {
       if(objStore.StoreID == strStoreID)
          return true; 
  }
  return false;
}
在这里,我想模拟objoutlookaplication.Session.Stores,并尝试覆盖foreach的行覆盖率

我怎样才能模仿这个物体

我试过使用Moq.MockRhino.Mock。但我没有从中得到任何适当的解决办法

单元测试用例代码示例:

[TestMethod]
public void T0005_IsMyPstStoreIsAvailableMoq()
{
   Moq.Mock<Outlook.Application> objMockApplication = null;
   Moq.Mock<Outlook.NameSpace> objMockNameSpace = null;
   Moq.Mock<Outlook.Stores> objMockStores = null;
   Moq.Mock<Outlook.Store> objMockStore = null;  
   try
   {
   objMockApplication = new Moq.Mock<Outlook.Application>();
   objMockStores = new Moq.Mock<Outlook.Stores>();
   objMockStore = new Moq.Mock<Outlook.Store>();
   objMockNameSpace = new Moq.Mock<Outlook.NameSpace>();

objMockFrmOurlookWatcher.Setup(x => x.GetApplicationObject()).Returns(objMockApplication.Object);

objMockApplication.Setup(x => x.Session).Returns(objMockNameSpace.Object);

objMockNameSpace.Setup(x => x.Stores).Returns(objMockStores.Object);

objIFrmOurlookWatcher.IsMyPstStoreIsAvailable("ABCD StoreID");                    
    }
    catch (System.Exception ex)
    {
         Assert.Fail("IsMyPstStoreIsAvailableMoq" + ex.Message.ToString());
    }
}
[TestMethod]
公共无效T0005_IsMyPstStoreIsAvailableMoq()
{
Moq.Mock objMockApplication=null;
Moq.Mock objMockNameSpace=null;
Moq.Mock objMockStores=null;
Moq.Mock objMockStore=null;
尝试
{
objMockApplication=new Moq.Mock();
objMockStores=new Moq.Mock();
objMockStore=new Moq.Mock();
objMockNameSpace=new Moq.Mock();
Setup(x=>x.GetApplicationObject()).Returns(objMockApplication.Object);
Setup(x=>x.Session).Returns(objMockNameSpace.Object);
Setup(x=>x.Stores).Returns(objMockStores.Object);
objIFrmOurlookWatcher.ismypststoreisavable(“ABCD StoreID”);
}
catch(System.Exception-ex)
{
Assert.Fail(“IsMyPstStoreIsAvailableMoq”+ex.Message.ToString());
}
}

谢谢

当前状态下的问题不完整。阅读问题,然后提供一个可以用来重现问题的答案,以便更好地理解所问的问题。无关提示:你不需要围绕测试的内容进行
try…catch{Assert.Fail}
。任何未捕获的异常都将导致测试失败,并提供比代码提供的信息更好的信息。