Я пытаюсь выполнить модульное тестирование обобщенного 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 или нет, пожалуйста, не стесняйтесь отвечать. Любая помощь будет оценена.