2016-02-18 28 views
0

这是我想要测试的主要课程。它包含一个私有方法。如何使用C#中的Shim类获取和设置对象的值微软假冒单元测试?

Public class MyClass 
{ 

    private bool IsWorkDone(MyItem item, string name) 
    { 
     using (MyThing thingObj = new MyThing(item.ID)) 
     { 
      using (MyWork workObj = thingObj.Open()) 
      { 
       try 
       { 
        return false; 
       } 
      } 
     } 
     return true; 
    } 
} 

在我的测试类我已经写了下面的方法

public void CheckIsWorkDoneTest() 
    { 
     using (ShimsContext.Create()) 
     { 

      MyItem myitem = new ShimMyItem() { 
                 itemGet =() => new ShimMyItem() 
                 { 
                   IDGet =() => new Guid();                 
                 } 
                 }; 

ShimMyClass.AllInstances.isWorkDoneItemString = (MyClass, MyItem, MyName) => "Here I'm stuck. I need help from stackoverflow users" 

PrivateObject objMyClass = new PrivateObject(typeof(MyClass)); 
      object[] parameters = new object[2] { myItem, workName }; 
      bool result = Convert.ToBoolean(objMyClass.Invoke("IsWorkDone", parameters)); 


Assert.AreEqual(result,true); 
} 

我想设置为从声明oSite对象的值=使用>”(MyThing thingObj =新MyThing(item.ID)) “从我的主MyClass类。 在调试此行时抛出对象引用未设置为实例错误。

因此,使用ShimMyClass.Allinstance如何获取或设置它的值?

回答

0

你有很多不一致的地方,所以你的问题可能只是把它们压制出来。如果您的实际代码更一致,请更新您的帖子。主要的事情

  • 你给私有方法IsComplete但是从你的Invoke方法调用isWorkflowCompleted
  • 你可能最终会调用您的匀方法,将通过“在这里我卡”,并试图将其字符串转换为布尔。

我欺骗了你的骷髅,并调整了一些名称后,我的工作。

+0

我已经解决了它在我的测试方法中使用下面的代码: –

+0

很高兴听到你得到它的工作。总是感觉良好,取得一些进展。 – doobop

相关问题