Можно ли сделать тестовый метод generi c при использовании MSTest в качестве тестовой среды? - PullRequest
0 голосов
/ 18 февраля 2020

Я пытаюсь выполнить модульное тестирование обобщенного c метода, который принимает обобщенный c делегат в качестве одного из аргументов. Этот метод имеет более 15 ссылок, и эти ссылки передают различные указатели на функции в качестве параметра. Здесь я пытаюсь передать указатель на другую функцию вместе с другими параметрами и проверить функциональность, содержащуюся в этом фактическом методе.

  [TestMethod]    
  [DynamicData("TestMethodParameterSets", DynamicDataSourceType.Method)]    
  public void SomeMethodToTest_WhenSomeOperationFails_ShouldLogSomeExceptionMessage<T, R>(               
   T model, SomeActionDelg<T, R> callbackAction)        
   {
          repository.Setup(..some setup here ..);    

          var result = _controller.SomeMethodToTest(model, callbackAction) as RedirectToRouteResult;

          _log.Verify(x => x.Error(It.IsAny<object>()));
   }    

   public IEnumerable<object[]> TestMethodParameterSets()     
    {    
          var model = new SomeModelClass();

          return new[]
          {
              new object[] { model, (Func<SomeModelClass, int>) SomeOtherMethodToExecute},
              //new object[] { model2, (Func<SomeModelClass2, int>) SomeOtherMethodToExecute2}
              //more values
          };
   }    

И вот так выглядит тестируемый делегат и основной метод;

  public delegate R SomeActionDelg<T, R>(T model); 

  public ActionResult SomeMethodToTest<T, R>(T model, SomeActionDelg<T, R> callbackAction) 

   {     

  //  some more code here     

   }     

Проблема с этим кодом в том, что MSTest не определяет метод теста из-за его общего характера c. Так что, если кто-то делал подобные вещи или имеет какое-либо представление о том, позволяет ли MSTest нам написать общий тестовый метод c или нет, пожалуйста, не стесняйтесь отвечать. Любая помощь будет оценена.

...