C# 我怎么会误用NotThrowAsync

C# 我怎么会误用NotThrowAsync,c#,async-await,fluent-assertions,C#,Async Await,Fluent Assertions,我使用了FluentAssertions;太棒了我特别喜欢使用它提供的.Invoking.Should.Throw模式 我在测试中写了这句话: 调用r=>r.SomeAsyncFunc.Should.NotThrowAsync; 其中.SomeAsyncFunc使用async关键字声明,并在内部使用await关键字 一切都过去了,我非常高兴。然后我想验证一下测试是否在做我认为它在做的事情,所以我添加了代码来强制SomeAsyncFunc立即抛出。在点击任何等待关键字之前 它还是过去了。这让我很难

我使用了FluentAssertions;太棒了我特别喜欢使用它提供的.Invoking.Should.Throw模式

我在测试中写了这句话:

调用r=>r.SomeAsyncFunc.Should.NotThrowAsync; 其中.SomeAsyncFunc使用async关键字声明,并在内部使用await关键字

一切都过去了,我非常高兴。然后我想验证一下测试是否在做我认为它在做的事情,所以我添加了代码来强制SomeAsyncFunc立即抛出。在点击任何等待关键字之前

它还是过去了。这让我很难过:

我尝试了以下配方,所有配方都通过了:

调用r=>r.SomeAsyncFunc.Should.NotThrowAsync; myObject.Invokingasync r=>Wait r.SomeAsyncFunc.Should.NotThrowAsync; myObject.Waitingr=>r.SomeAsyncFunc.Should.NotThrowAsync; myObject.AwaitingFuncasync r=>await r.SomeAsyncFunc.Should.NotThrowAsync; 而如果我这样做,它就会起作用。。。但这感觉很不对

调用r=>r.SomeAsyncFunc.Should.NotThrow; 我误解了什么?

我是个白痴

.NotThrowAsync本身就是一个异步方法,因此需要等待它正常工作

为了实现这一点,我还需要使测试异步:

//|*这一点*| 相关条件下的公共异步任务SomeAsyncFunc\u不符合以下要求 { //…进行设置。 等待myObject.Invokingr=>r.SomeAsyncFunc.Should.NotThrowAsync; } 我是个白痴

.NotThrowAsync本身就是一个异步方法,因此需要等待它正常工作

为了实现这一点,我还需要使测试异步:

//|*这一点*| 相关条件下的公共异步任务SomeAsyncFunc\u不符合以下要求 { //…进行设置。 等待myObject.Invokingr=>r.SomeAsyncFunc.Should.NotThrowAsync; }
你需要把正确的东西结合起来。因此,要么使用同步版本:

myObject.Waitingr=>r.SomeAsyncFunc.Should.NotThrow; 或者完全异步:

wait myObject.waitingr=>r.SomeAsyncFunc.Should.NotThrowAsync;
你需要把正确的东西结合起来。因此,要么使用同步版本:

myObject.Waitingr=>r.SomeAsyncFunc.Should.NotThrow; 或者完全异步:

wait myObject.waitingr=>r.SomeAsyncFunc.Should.NotThrowAsync;
顺便说一句,你说的“行得通”这句话其实并不管用。该方法返回一个可能尚未执行的任务。。但是如果在测试中没有等待,它无论如何也不会抛出异常,除非你在方法的第一次等待之前抛出任何异常。顺便说一句,你说的“有效”这句话实际上是行不通的。该方法返回一个可能尚未执行的任务。。但是如果在测试中没有等待,它无论如何也不会抛出,除非在方法的第一次等待之前抛出任何异常。调用和。等待之间的区别是什么。调用和。等待,文档似乎没有真正解释它?调用和。等待之间的区别是什么。调用和。等待,文档似乎没有真正解释它?