이의 내가 이런 식으로 F 번호 비동기를 지원하기 위해 xUnit의의 Assert.Throws
을 확장하고 싶은 말은하자 unit -> Async<obj>
으로 추측됩니다. 이것은 발신자에게 불필요하게 제한적입니다. unit -> Async<'a>
이어야합니다.형식 유추
let AsyncThrows<'TException when 'TException :> exn> (asyncTask:unit->Async<'a>)
이 작동 여전히 비밀 경고 Async<obj>
로 컴파일하지 않습니다는 ("... ... 표시보다 일반적으로 코드를 일으키는") : 나는 다음과 같은 노력했다.
let AsyncThrows<'TException, 'a when 'TException :> exn> (asyncTask:unit->Async<'a>)
이것은 작동하지만 호출자가 비동기 함수의 반환 유형을 명시 적으로 제공하도록합니다.
Assert.AsyncThrows<InvalidOperationException, string>(fun() -> async { return "" })
비동기 함수가 아닌 예외 유형 만 제공하면됩니다.
(참고 : 실제로 사용하는 경우 비동기가 아니라 다른 유사한 계산식이 사용되며, 비동기를 사용하여 예제로 사용됩니다.)