从TestMethod调用时不返回异步方法

时间:2016-05-31 14:33:52

标签: c# visual-studio unit-testing asynchronous

我正在使用Visual Studio 2013和MSTest对我的异步方法进行单元测试。我有如下的异步方法:

    public async Task<Client> AddClientAsync(Client newClient)
    {
        newClient.ObjectState = ObjectState.Added;
        base.Insert(newClient);
        await unitOfWorkAsync.SaveChangesAsync();
        return newClient;
    }

UnitOfWorkAsync SaveChangesAsync()方法:

    public Task<int> SaveChangesAsync()
    {
        return _dataContext.SaveChangesAsync();
    }

数据上下文SaveChangesAsync()方法:

    public override async Task<int> SaveChangesAsync()
    {
        return await this.SaveChangesAsync(CancellationToken.None);
    }

    public override async Task<int> SaveChangesAsync(CancellationToken cancellationToken)
    {
        SyncObjectsStatePreCommit();
        var changesAsync = await base.SaveChangesAsync(cancellationToken);
        SyncObjectsStatePostCommit();
        return changesAsync;
    }

我已经编写了以下单元测试方法来测试它。

    [TestMethod]
    public async Task AddClientAsync_Success()
    {
        Client client = new Client()
        {
            Id=2,
            FirstName="John",
            LastName="Tylor",
            MaritalStatusId=1,
            RecordStatus=1                
        };

        var result = await clientAppService.AddClientAsync(client);
        Assert.IsNotNull(result);
    }

当我运行/调试测试用例控件到达下面的行并且永远不会返回。它有点卡住并且在这条线上无休止地等待并且测试永远不会完成。

await unitOfWorkAsync.SaveChangesAsync();

知道我在这里缺少什么吗?

更新:它执行SaveChangesAsync()方法,该方法也返回结果,但该测试的后期永远不会完成。

0 个答案:

没有答案
相关问题