Que*_*est 4 c# nunit unit-testing moq asp.net-web-api2
我有一个WebAPI,它使用自定义ExceptionHandler来处理所有异常.我怎么能单元测试此CustomExceptionHandler.任何领导都会有所帮助
public class CustomExceptionHandler : ExceptionHandler
{
public override void Handle(ExceptionHandlerContext context)
{
try
{
context.Result = new ResponseMessageResult(context.Request.CreateResponse(HttpStatusCode.InternalServerError, context.Exception));
}
catch (Exception)
{
base.Handle(context);
}
}
public override bool ShouldHandle(ExceptionHandlerContext context)
{
return true;
}
}
Run Code Online (Sandbox Code Playgroud)
要对此自定义异常处理程序进行单元测试,请创建sut/mut所需的依赖项,并执行测试以验证预期的行为.
这是一个简单的例子,可以帮助您入门.
[TestClass]
public class CustomExcpetionhandlerUnitTests {
[TestMethod]
public void ShouldHandleException() {
//Arrange
var sut = new CustomExceptionHandler();
var exception = new Exception("Hello World");
var catchblock = new ExceptionContextCatchBlock("webpi", true, false);
var configuration = new HttpConfiguration();
var request = new HttpRequestMessage(HttpMethod.Get, "http://localhost/api/test");
request.SetConfiguration(configuration);
var exceptionContext = new ExceptionContext(exception, catchblock, request);
var context = new ExceptionHandlerContext(exceptionContext);
Assert.IsNull(context.Result);
//Act
sut.Handle(context);
//Assert
Assert.IsNotNull(context.Result);
}
}
Run Code Online (Sandbox Code Playgroud)
对于上述测试,仅提供必要的依赖性以进行测试.被测试的方法(mut)有一个依赖ExceptionHandlerContext.在将该类传递给mut之前,已经为它提供了该类的最小依赖性.
可以扩展断言以适应预期的行为.
由于所有依赖项都不是抽象的,因此Moq无法将它们包装起来.但是,这并没有阻止手动实例化所需的类.
| 归档时间: |
|
| 查看次数: |
1488 次 |
| 最近记录: |