当单元测试时,系统无法解析UnitOfWorkManager.Current
(null参考异常)。 _unitOfWorkManager
的类型为:IUnitOfWorkManager
,并通过DI注入。单元测试中嘲笑UnitOfWorkManager.Current
我测试了以下Web API代码:
[HttpPost]
public async Task<IHttpActionResult> Subscription(SubscriptionInputDto model)
{
if (!await VendorHasAccess(model.OrganizationId))
return StatusCode(HttpStatusCode.Forbidden);
var input = new Subscription
{
...
};
var data = await _subscriptionRepository.InsertAsync(input);
await _unitOfWorkManager.Current.SaveChangesAsync();
return Ok(data.MapTo<SubscriptionDto>());
}
...用下面的单元测试:
[Fact]
public async Task Should_Create_New_Subscription()
{
//Arrange
var organization = await UsingDbContextAsync(async context => await context.VendorOrganizations.FirstOrDefaultAsync());
var input = new SubscriptionInputDto { OrganizationId = organization.Id };
//Act
var actionResult = await _vendorController.Subscription(input);
var response = actionResult as OkNegotiatedContentResult<SubscriptionDto>;
//Assert
Assert.NotNull(response);
Assert.Equal(organization.Id, response.Content.OrganizationId);
}
我想不通,或找到任何文件,如何解决UnitOfWorkManager.Current
,以便在单元测试中不会失败。 Web API代码本身在生产中工作。
任何提示?
你如何初始化'_vendorController'?它应该通过'iocManager'获取,而不是通过'new VendorController'来获取。 –
是的,像这样:'_vendorController = Resolve();' –
Oakfire
您的单元测试类是否从'Abp'基础设施的现有类继承? –