Met*_*nix 11 c# unit-testing asynchronous async-await asp.net-web-api
我在WebAPI MVC项目中有一个相当复杂的方法.它执行许多操作,包括命中远程服务器以进行用户身份验证.根据结果,它返回重定向(页面),字符串错误消息或表示所有身份验证monkey-business的对象.
从浏览器调用时效果很好.它甚至可以在调试中正常工作.我甚至可以写一个重定向到它并"手动"调用它,传递它需要的任何参数.
我遇到的问题是在创建WebAPI项目时从测试项目VS调用它.我怀疑这是因为因为所有这些async
而await
被抛出.当它进入它时,最终它返回一个"对象未设置为对象的实例"错误.
由于它适用于任何其他环境,我认为这是因为它在测试项目中并且需要等待.有人能给我任何建议吗?
编辑:非常具体,这里的第二行代码失败了:
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.
Run Code Online (Sandbox Code Playgroud)
代码上下文:
这是利用Box.com API.BoxJWT调用创建一个JSON Web令牌.我不知道在这个过程中它失败了,因为当我追踪它时,它无法向我显示像PEMReader.cs之类的东西的代码(这与加密,弹性城堡有关).但非常具体地说,错误消息详细说明来源是Box.V2.JWTAuth.PEMPasswordFinder.GetPassword()
dav*_*ung 13
每当我创建一个测试异步代码的测试方法时,我都要确保测试方法的签名是Async并返回Task.这允许您避免来自异步void的可怕死锁.现在你可以等待测试方法.
更多信息:https://msdn.microsoft.com/en-us/magazine/dn818493.aspx
例:
[TestMethod]
public async Task myTestMethod()
{
await MyMethodToTest();
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5446 次 |
最近记录: |