Имам следния код:
public class MyControllerClass : ApiController
{
private readonly IManager _manager;
public MyControllerClass(IManager manager)
{
this._manager = manager;
}
pubic async Task<IHttpActionResult> GetRequest()
{
try
{
await this._manager.GetRequest();
return this.ok();
}
catch (Exception ex)
{
this.logger.Error("Error message", ex);
throw this.HTTPResponseException("Request failed message", ex);
}
}
}
public class ManagerFake : IManagerFake
{
public Task GetRequest()
{
return Task.FromResult(true);
}
}
Използвам NUnit за тестване на единици. За модулните тестове имам клас FakeManager, регистриран в моя IOC контейнер, който съдържа метода GetResult() и просто връща Task.FromResult(true), когато се изпълни. Това позволява логиката в блока try да бъде изпълнена и по този начин да бъде изпълнено правилното покритие на кода за този раздел.
Проблемът, който имам, е как да създам тест, използвайки същия клас FakeManager, който ще хвърли изключение, така че логиката на catch блока да бъде изпълнена и покритието на кода да е удовлетворено, когато няма начин да се направят две уникални извиквания към GetRequest (), тъй като не приема входни параметри, които биха могли да се използват за разграничаване на двете различни повиквания?
.GetRequest()
метод да хвърля изключение. - person Lasse V. Karlsen   schedule 09.05.2018