当前位置:  开发笔记 > 编程语言 > 正文

在VS15中使用Moq进行单元测试时,returnsasync(null)会产生构建错误

如何解决《在VS15中使用Moq进行单元测试时,returnsasync(null)会产生构建错误》经验,为你挑选了1个好方法。

当我ReturnsAsync(null)在Visual Studio(with Moq)中使用C#单元测试方法时,我收到错误:

"以下方法或属性之间的调用不明确"

然后是ReturnsAsync具有不同参数的方法列表.我知道这是由于ReturnsAsync函数被重载.但是,当我在同事的计算机上运行相同的单元测试时,它运行没有任何错误.有谁知道为什么会这样?有谁知道如何解决这一问题?

此外,当我建立时,我收到警告:

所有引用********的软件包都必须安装nuget软件包Microsoft.Bcl.Build.

这会有什么影响吗?



1> Sergey Berez..:

ReturnsAsyncMoq类有两种扩展方法ReturnsExtensions.它们有以下参数:

(this IReturns> mock, TResult value)
(this IReturns> mock, Func valueFunction)

正如您所看到的那样,一个接受应该由task返回的值,而另一个接受将返回值的委托.当你传递null编译器时,不知道它是值还是委托.当task参数是值类型(例如int)时,情况并非如此.因为它不能为null并且编译器理解null是委托.你的同事的电脑可能就是这种情况.

要修复此错误,您需要帮助编译器选择正确的方法重载 - 将null转换为任务结果的类型(例如字符串):

RetursAsync((string)null)

或者您可以传递null值

string s = null;
... ReturnsAsync(s);


或者,如果升级后有很多这些错误,并且不想打算转换为不同的返回类型:`ReturAsync(()=> null)`
或者你可以通过`RetursAsync(default(string))`
推荐阅读
雯颜哥_135
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有