c# – 如何从[TestMethod]调用异步?

前端之家收集整理的这篇文章主要介绍了c# – 如何从[TestMethod]调用异步?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在WebAPI MVC项目中有一个相当复杂的方法.它执行许多操作,包括命中远程服务器以进行用户身份验证.根据结果​​,它返回重定向(页面),字符串错误消息或表示所有身份验证monkey-business的对象.

从浏览器调用效果很好.它甚至可以在调试中正常工作.我甚至可以写一个重定向到它并“手动”调用它,传递它需要的任何参数.

我遇到的问题是在创建WebAPI项目时从测试项目VS调用它.我怀疑这是因为因为所有异步和等待被抛出.当它进入它时,最终它会返回一个“对象未设置为对象的实例”错误.

由于它适用于任何其他环境,我认为这是因为它在测试项目中并且需要等待.任何人都可以给我任何建议吗?

编辑:非常具体,这里的第二行代码失败了:

BoxConfig BoxConfig = new BoxConfig(ClientID,ClientSecret,enterpriseID,prvt,JWTPublicKeyPass,JWTPublicKeyID);
BoxJWTAuth BoxJWT = new BoxJWTAuth(BoxConfig); //This is a JSON web token and is needed to authorize the enterprise level app user.

代码上下文:

这是利用Box.com API. BoxJWT调用创建一个JSON Web令牌.我不知道在这个过程中它失败了,因为当我追踪它时,它无法向我显示像PEMReader.cs之类的东西的代码(这与加密,弹性城堡有关).但非常具体,错误消息详细说明源是Box.V2.JWTAuth.PEMPasswordFinder.GetPassword()

解决方法

每当我创建一个测试异步代码的测试方法时,我都要确保测试方法的签名是Async并返回Task.这允许您避免来自异步void的可怕死锁.现在你可以等待测试方法.

更多信息:https://msdn.microsoft.com/en-us/magazine/dn818493.aspx

例:

[TestMethod]
public async Task myTestMethod()
{
  await MyMethodToTest();
}

猜你在找的C#相关文章