ユニットテストでは、システムはUnitOfWorkManager.Current
(null参照例外)を解決できません。 _unitOfWorkManager
はタイプ:IUnitOfWorkManager
であり、DIを介して注入される。以下のユニットテストで...ユニットテストでUnitOfWorkManager.Currentを擬似します
[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>());
}
:
私は、次のWeb APIコードをテストしてい
[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'を初期化する方法は?これは、 'new VendorController'を介してではなく、' iocManager'を介してフェッチされます。 –
これは次のようです: '_vendorController = Resolve();' –
Oakfire
ユニットテストクラスは、 'Abp'インフラストラクチャから既存のクラスから継承されていますか? –