0

我正在使用 rethinkdb,我正在尝试删除表中的所有记录。使用Runon 查询时,查询工作没有问题,因此是同步的。当使用RunAsync程序退出时status code -1

该程序不会抛出任何异常,所以我应该如何找出它存在的原因?

public class ChangeFeedTests
{
    [TestCase()]
    public async Task ChangeFeedTest()
    {
       RethinkDB r = RethinkDB.R;  
       Connection.Builder builder = r.Connection();
       builder.Port(Constants.PORT).Hostname(Constants.HOST_NAME);
       Connection con = await builder.ConnectAsync(); /

           try
           {
               var c = await ret.Db(Constants.DB_NAME)
                                .Table(Constants.TABLE_NAME)
                                .Delete().RunAsync(conn); //->exits
                 //------------------.Run(conn)  -> works fine

           }
           catch (Exception ex)
           {

               throw;
           }



        Assert.IsTrue(true);

    }
}
4

1 回答 1

0

您本可以一直调用保持测试异步。

通过使用Action你有一个async void不会让你捕获任何异常。

[TestCase()]
public async Task ChangeFeedTest() {
    //Arrange
    RethinkDB rethinkDb = RethinkDB.R;
    Connection connection = await rethinkDb.Connection()
        .Port(Constants.PORT)
        .Hostname(Constants.HOST_NAME)
        .ConnectAsync();

    //Act
    var actual = await rethinkDb.Db(Constants.DB_NAME).Table(Constants.TABLE_NAME)
                        .Delete().RunAsync(connection);

    //Assert

    //...do assertions here
}

所以现在抛出的任何异常都会被测试运行程序捕获并显示在测试结果中。

参考Async/Await - 异步编程的最佳实践

于 2018-06-17T20:38:08.800 回答