代码之家  ›  专栏  ›  技术社区  ›  Oakfire

嘲笑UnitOfWorkManager。单元测试中的电流

  •  1
  • Oakfire  · 技术社区  · 7 年前

    UnitOfWorkManager.Current (nullreference异常)。这个 _unitOfWorkManager 类型: IUnitOfWorkManager

    我正在测试以下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。现在的 web API代码本身在生产中工作。

    1 回复  |  直到 7 年前
        1
  •  1
  •   aaron    7 年前

    virtual .

    请参阅: UnitOfWork Attribute Restrictions

    您可以将UnitOfWork属性用于:

    • 自注入类的所有公共虚拟方法(如MVC控制器和Web API控制器)。

    使现代化

    using (var unitOfWork = Resolve<IUnitOfWorkManager>().Begin())
    {
        // ...
        unitOfWork.Complete();
    }