// Async actions that has dynamic return type but return Task or Task<T> are not handled in any special way as, // they are not supported. They are considered as regular methods that return object type. public async Task AsyncAction_WithDynamicReturnType() { // Arrange var inputParam1 = 1; var inputParam2 = "Second Parameter"; var actionParameters = new Dictionary <string, object> { { "i", inputParam1 }, { "s", inputParam2 } }; var dynamicTaskMethod = new ReturnTaskAsDynamicValue(_controller.ReturnTaskAsDynamicValue); // Act var result = await(Task <int>)(await ExecuteAction( dynamicTaskMethod, _controller, actionParameters)); // Assert Assert.Equal(inputParam1, result); }
public async Task AsyncAction_WithDynamicReturnTypeThrows() { int inputParam1 = 1; string inputParam2 = "Second Parameter"; var actionParameters = new Dictionary <string, object> { { "i", inputParam1 }, { "s", inputParam2 } }; var dynamicTaskMethod = new ReturnTaskAsDynamicValue(_controller.ReturnTaskAsDynamicValue); string expectedException = string.Format( CultureInfo.CurrentCulture, "The method 'ReturnTaskAsDynamicValue' on type '{0}' returned a Task instance even though it is not an asynchronous method.", typeof(TestController)); await AssertThrowsAsync <InvalidOperationException>( async() => await ControllerActionExecutor.ExecuteAsync( dynamicTaskMethod.GetMethodInfo(), _controller, actionParameters), expectedException); }
public async Task AsyncAction_WithDynamicReturnTypeThrows() { // Arrange var inputParam1 = 1; var inputParam2 = "Second Parameter"; var actionParameters = new Dictionary<string, object> { { "i", inputParam1 }, { "s", inputParam2 } }; var dynamicTaskMethod = new ReturnTaskAsDynamicValue(_controller.ReturnTaskAsDynamicValue); var expectedException = string.Format( CultureInfo.CurrentCulture, "The method 'ReturnTaskAsDynamicValue' on type '{0}' returned a Task instance even though it is not an asynchronous method.", typeof(TestController)); // Act & Assert var ex = await Assert.ThrowsAsync<InvalidOperationException>( () => ControllerActionExecutor.ExecuteAsync( dynamicTaskMethod.GetMethodInfo(), _controller, actionParameters)); Assert.Equal(expectedException, ex.Message); }