2016-02-18 6 views
0

Вот мой основной класс, который я хочу проверить. Он содержит один закрытый метод.Как получить и установить значение для объекта с помощью классов Shim в C# Microsoft подделывает модульное тестирование?

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 но называть isWorkflowCompleted из метода Invoke
  • Вы, вероятно, в конечном итоге звонит подкладками метод, который будет проходить «Здесь я застрял» и попытаться преобразовать эту строку в Boolean.

Я сфальсифицировал ваш скелет и получил свою работу после корректировки некоторых имен.

+0

Я решил это, используя нижеследующий код в своем методе: –

+0

Рад слышать, что вы его работали. Всегда чувствует себя хорошо, чтобы добиться определенного прогресса. – doobop