public void ExecuteThrowsIfParametersIsNull() { // Arrange ReflectedActionDescriptor ad = GetActionDescriptor(); // Act & assert Assert.ThrowsArgumentNull( delegate { ad.Execute(new Mock <ControllerContext>().Object, null); }, "parameters"); }
public void ExecuteThrowsIfControllerContextIsNull() { // Arrange ReflectedActionDescriptor ad = GetActionDescriptor(); // Act & assert Assert.ThrowsArgumentNull( delegate { ad.Execute(null, new Dictionary <string, object>()); }, "controllerContext"); }
public void ExecuteThrowsIfParametersIsMissingAValue() { // Arrange ReflectedActionDescriptor ad = GetActionDescriptor(_int32EqualsIntMethod); Dictionary <string, object> parameters = new Dictionary <string, object>(); // Act & assert Assert.Throws <ArgumentException>( delegate { ad.Execute(new Mock <ControllerContext>().Object, parameters); }, @"The parameters dictionary does not contain an entry for parameter 'obj' of type 'System.Int32' for method 'Boolean Equals(Int32)' in 'System.Int32'. The dictionary must contain an entry for each parameter, including parameters that have null values. Parameter name: parameters"); }
public void ExecuteThrowsIfParametersContainsValueOfWrongTypeForParameter() { // Arrange ReflectedActionDescriptor ad = GetActionDescriptor(_int32EqualsIntMethod); Dictionary <string, object> parameters = new Dictionary <string, object>() { { "obj", "notAnInteger" } }; // Act & assert Assert.Throws <ArgumentException>( delegate { ad.Execute(new Mock <ControllerContext>().Object, parameters); }, @"The parameters dictionary contains an invalid entry for parameter 'obj' for method 'Boolean Equals(Int32)' in 'System.Int32'. The dictionary contains a value of type 'System.String', but the parameter requires a value of type 'System.Int32'. Parameter name: parameters"); }
public void ExecuteThrowsIfParametersContainsNullForNonNullableParameter() { // Arrange ReflectedActionDescriptor ad = GetActionDescriptor(_int32EqualsIntMethod); Dictionary <string, object> parameters = new Dictionary <string, object>() { { "obj", null } }; // Act & assert Assert.Throws <ArgumentException>( delegate { ad.Execute(new Mock <ControllerContext>().Object, parameters); }, @"The parameters dictionary contains a null entry for parameter 'obj' of non-nullable type 'System.Int32' for method 'Boolean Equals(Int32)' in 'System.Int32'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. Parameter name: parameters"); }
public void ExecuteThrowsIfParametersContainsNullForNonNullableParameter() { // Arrange ReflectedActionDescriptor ad = GetActionDescriptor(_int32EqualsIntMethod); Dictionary <string, object> parameters = new Dictionary <string, object>() { { "obj", null } }; // Act & assert ExceptionHelper.ExpectArgumentException( delegate { ad.Execute(new Mock <ControllerContext>().Object, parameters); }, @"The parameters dictionary contains a null entry for parameter 'obj' of non-nullable type 'System.Int32' for method 'Boolean Equals(Int32)' in 'System.Int32'. To make a parameter optional its type should be either a reference type or a Nullable type. Parameter name: parameters"); }
/// <summary> /// Начинает выполнение асинхронной операции, описанной в action'e /// </summary> /// <param name="controllerContext">текущий контекст контроллера</param> /// <param name="parameters">параметры action'а</param> /// <param name="callback">делегат, который вызывается после завершения /// асинхронной операции</param> /// <param name="state">дополнительное состояние</param> /// <returns>возвращает асинхронную операцию в виде <see cref="IAsyncResult" /></returns> public override IAsyncResult BeginExecute( ControllerContext controllerContext, IDictionary <string, object> parameters, AsyncCallback callback, object state) { var rad = new ReflectedActionDescriptor(_methodInfo, ActionName, ControllerDescriptor); var result = rad.Execute(controllerContext, parameters) as Task; if (result == null) { throw new InvalidOperationException( String.Format("Метод {0} должен был вернуть Task!", _methodInfo)); } if (callback != null) { result.ContinueWith(_ => callback(result)); } return(result); }
public void ExecuteCallsMethodInfoOnSuccess() { // Arrange Mock <ControllerContext> mockControllerContext = new Mock <ControllerContext>(); mockControllerContext.Setup(c => c.Controller).Returns(new ConcatController()); Dictionary <string, object> parameters = new Dictionary <string, object>() { { "a", "hello " }, { "b", "world" } }; ReflectedActionDescriptor ad = GetActionDescriptor(typeof(ConcatController).GetMethod("Concat")); // Act object result = ad.Execute(mockControllerContext.Object, parameters); // Assert Assert.Equal("hello world", result); }