ms测试的异步单元测试

时间:2018-03-23 12:05:57

标签: f# mstest

如何在ms单元测试中测试异步方法,导致单元测试成功或失败

[<TestClass>]
type TestRequestDataClass () =

    [<TestMethod>]
    member this.TestRequestDataAsync() = async {
        let! result = requestDataAsync()
        match result with
        | Ok result ->   Assert.IsTrue(true)
        | Error error -> Debug.WriteLine(error)
                         Assert.IsTrue(false)
    }

1 个答案:

答案 0 :(得分:2)

我没有MS Test来尝试这个,但如果你需要生成一个返回非泛型Task的方法(而不是泛型Task<T>),那么你可以定义以下内容助手:

open System.Threading.Tasks

let startAsActionTask f = 
  Async.StartAsTask f :> Task

Async.StartAsTask总是创建一个通用Task<T>,但除此之外,它与此帮助器几乎相同。然后你可以按如下方式使用帮助器:

[<TestMethod>]
member this.TestRequestDataAsync() = startAsActionTask <| async {
    let! result = requestDataAsync()
    match result with
    | Ok result ->   Assert.IsTrue(true)
    | Error error -> Debug.WriteLine(error)
                     Assert.IsTrue(false)
}