Ниже указана функция тестирования, которая проверяет, существуют ли сведения для конкретного идентификатора транзакции.
[Fact]
public async Task GetAllBlobDetails_Test()
{
_serviceScopeFactory.Setup(x => x.CreateScope().ServiceProvider.GetRequiredService<MriDbContext>()).Returns(_context);
BlobStatusEntity blobStatusEntity = await _bspRepository.GetBlobDetails("123");
Assert.NotNull(blobStatusEntity)
}
где _serviceScopeFactory равно
Mock<IServiceScopeFactory> _serviceScopeFactory = new Mock<IServiceScopeFactory>();
(Microsoft.Extensions.DependencyInjection)
В приведенной выше функции он вызывает _bspRepository.GetBlobDetails для конкретный идентификатор транзакции ("123")
Итак, вот определение GetBlobDetails
public async Task<BlobStatusEntity> GetBlobDetails(string transactionId)
{
if (String.IsNullOrEmpty(transactionId))
{
throw new ArgumentNullException(nameof(transactionId));
}
MriDbContext mriDbcontext = _scopeFactory.CreateScope().ServiceProvider.GetRequiredService<MriDbContext>();
return await mriDbContext.BlobStatus.FirstOrDefaultAsync(ele => ele.TransactionId == transactionId);
}
, где _scopeFactory - это IServiceScopeFactory _scopeFactory
, которое вводится из конструктора.
Когда я Я запускаю вышеуказанную тестовую функцию GetAllBlobDetails_Test, я получаю следующую ошибку.
Message:
System.NotSupportedException : Unsupported expression: ... => ....GetRequiredService<MriDbContext>()
Extension methods (here: ServiceProviderServiceExtensions.GetRequiredService) may not be used in setup / verification expressions.
Я новичок в moq и xunit.
Пожалуйста, помогите мне решить эту проблему.
Заранее спасибо