Wie man ControllerContext mit Erweiterungsmethoden verspottet
Posted: 23 Apr 2025, 11:18
Ich schreibe einen Unit -Test für die folgende Methode: < /p>
Um die Methode zu testen, muss ich iSajaxRequest () und ISCHILDACTACT verspotten, um entweder true oder false zurückzugeben. Es ist jedoch schwierig, IsajaxRequest () direkt zu verspotten, da es sich um eine Erweiterungsmethode handelt.
Jede Anleitung wäre sehr geschätzt!
Code: Select all
public sealed class AjaxChildActionAttribute : ActionMethodSelectorAttribute
{
public override bool IsValidForRequest(ControllerContext controllerContext, System.Reflection.MethodInfo methodInfo)
{
return controllerContext.RequestContext.HttpContext.Request.IsAjaxRequest() || controllerContext.IsChildAction;
}
}
Code: Select all
// Arrange
var mockControllerContext = new Mock();
mockControllerContext.Setup(c => c.RequestContext.HttpContext.Request.IsAjaxRequest()).Returns(true);
mockControllerContext.Setup(c => c.IsChildAction).Returns(true);
var _sut = new AjaxChildActionOnlyAttribute();
// Act
var result = _sut.IsValidForRequest(mockControllerContext.Object, null);
// Assert
Assert.True(result);