Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
F# 异步单元测试与ms测试_F#_Mstest - Fatal编程技术网

F# 异步单元测试与ms测试

F# 异步单元测试与ms测试,f#,mstest,F#,Mstest,如何在ms单元测试中测试异步方法,从而导致成功或失败的单元测试 [<TestClass>] type TestRequestDataClass () = [<TestMethod>] member this.TestRequestDataAsync() = async { let! result = requestDataAsync() match result with | Ok result ->

如何在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)
    }
[]
类型TestRequestDataClass()=
[]
成员:this.TestRequestDataAsync()=异步{
let!result=requestDataAsync()
匹配结果
|确定结果->断言.IsTrue(真)
|错误->调试.写入线(错误)
Assert.IsTrue(false)
}

我没有MS Test来尝试此操作,但是如果您需要生成一个返回非泛型
任务
(与泛型
任务
)的方法,那么您可以定义以下帮助器:

open System.Threading.Tasks

let startAsActionTask f = 
  Async.StartAsTask f :> Task
Async.startask
总是创建一个通用的
任务
,但除此之外,它与这个助手基本相同。然后可以按如下方式使用辅助对象:

[<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)
}
[]
成员this.TestRequestDataAsync()=StartActionTask Assert.IsTrue(true)
|错误->调试.写入线(错误)
Assert.IsTrue(false)
}

我没有MS Test来尝试此操作,但是如果您需要生成一个返回非泛型
任务
(与泛型
任务
)的方法,那么您可以定义以下帮助器:

open System.Threading.Tasks

let startAsActionTask f = 
  Async.StartAsTask f :> Task
Async.startask
总是创建一个通用的
任务
,但除此之外,它与这个助手基本相同。然后可以按如下方式使用辅助对象:

[<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)
}
[]
成员this.TestRequestDataAsync()=StartActionTask Assert.IsTrue(true)
|错误->调试.写入线(错误)
Assert.IsTrue(false)
}

您面临的问题是什么?您已经尝试过解决什么问题了?问题是我在IDE中看不到单元测试,列表消失了,您是否看到语法等方面的任何问题。对于单元测试,单元测试的异步体有问题,它只是从IDEMSTest中消失,需要测试方法返回
void
Task
。函数返回一个
Async
,因此MSTest会忽略它。让它返回一个
任务
@App2015这就是c#
[TestClass]公共类TestRequestDataClass{[TestMethod]公共异步任务TestRequestDataAsync(){…}}中的测试方法的样子
您面临的问题是什么?您已经尝试过解决什么问题了?问题是我在IDE中看不到单元测试,列表消失了,您是否看到语法等方面的任何问题。对于单元测试,单元测试的异步体有问题,它只是从IDEMSTest中消失,需要测试方法返回
void
Task
。函数返回一个
Async
,因此MSTest会忽略它。让它返回一个
任务
@App2015这是测试方法在c#
[TestClass]公共类TestRequestDataClass{[TestMethod]公共异步任务TestRequestDataAsync(){…}}
错误
这个表达式应该有类型
unit->unit`但是这里有类型'Async@App2015你说得对!我的助手错了。现在修复了。我尝试了你的方法,错误消失了,但是单元测试没有出现。早些时候我提出了一个解决方案,我删除了异步块并使用了
match(requestDataAsync()|>async.RunSynchronously)使用
,我可以看到列表中出现了单元测试。我偶然看到了你的文章,它帮助我走上了这条道路。错误
此表达式应具有类型
unit->unit`但此处具有类型'Async@App2015你说得对!我的助手错了。现在修复了。我尝试了你的方法,错误消失了,但是单元测试没有出现。早些时候我提出了一个解决方案,我删除了异步块,并使用了
match(requestDataAsync()|>async.RunSynchronously)和
,我可以看到单元测试出现在列表中。我看到了你的文章,它帮助我走上了这条道路。