Есть такой нехитрый код в контроллере
public class CarController : CarControllerBase
{
private readonly IFeatureGetCarById _featureGetCarById;
public CarController (IFeatureGetCarById featureGetCarById)
{
_featureGetCarById= featureGetCarById;
}
public async Task<IActionResult> GetCarById(
CancellationToken cancellationToken,
[Required] Guid carId,
int? version,
[FromServices] IFeatureGetCarById featureGetCarById)
{
return version.HasValue ?
Ok(await featureGetCarById.GetCarByIdForVersion(carId, version.Value, cancellationToken)) :
Ok(await featureGetCarById.GetCarByIdAsync(carId, cancellationToken));
}
и есть такой код в тесте.
Тест заходит в метод контроллера GetCarById но внутрь GetCarByIdForVersion или GetCarByIdAsync уже не заходит.
В ошибку не падает,возвращает просто null и 200
Как понять в чем проблема?
Есть подозрение что надо мокать еще внутри сервиса FeatureGetCarById что в конструктор инжектится.
А там среди прочих сервисов инжектится еще и DbContext.
var mockIFeatureGetCarById = new Mock<IFeatureGetCarById>();
CancellationToken cancellationToken = new CancellationToken();
Guid carId = new Guid("1018917A-FDF1-EC11-A07B-A4C3F063C82D");
int version = 2;
mockFeatureGetCarById.Setup(feature => feature.GetCarByIdForVersion(carId, version, cancellationToken));
mockFeatureGetCarById.Setup(feature => feature.GetCarByIdAsync(carId, cancellationToken));
var carController = new CarController(mockIFeatureGetCarById.Object);
var result = await carController.GetCarById(cancellationToken, carId , version, mockIFeatureGetCarById.Object);