Mar*_*tin 12 .net c# unit-testing moq
我想知道是否有人可以帮忙.我创建了自己的IHttpClient,因此我可以使用moq模拟HttpClient.工作得很好,但有一个名为DetaultRequestHeaders的内部对象,它有一个名为Authorization的属性.
我在我的构造函数或我的类中设置了这个,它在一个注入的IHttpClient中接受,当然在运行时一切都按预期工作.但是使用单元测试我得到一个错误说
Object reference not set to instance....
Run Code Online (Sandbox Code Playgroud)
这是因为DefaultRequestHeaders为null.
现在,在进一步调查之后,它似乎是类型的
HttpRequestHeaders
Run Code Online (Sandbox Code Playgroud)
但它是一个密封的类,所以我甚至不能这样做
.Setup(x => x.DefaultRequestHeaders).Returns(return new HttpRequestHeaders())
Run Code Online (Sandbox Code Playgroud)
有没有人有这方面的经验?
这是接口定义
HttpRequestHeaders DefaultRequestHeaders { get; }
Run Code Online (Sandbox Code Playgroud)
提前致谢
Jos*_*ger 15
只需注入具体的HttpClient并模拟底层的HttpMessageHandler ......
Chr*_*tle -2
您的方法调用语法Returns似乎不正确。密封类这一事实HttpRequestHeaders不应该对您是否可以从存根方法调用返回它的实例产生任何影响。尝试将该调用更改为Returns(new HttpRequestHeaders());or Returns(() => new HttpRequestHeaders());。
如果这不起作用(或者具体实现HttpRequestHeaders在某种程度上不适合您的需求),您可能需要尝试一个可以模拟密封类的框架,也许是 Moles 或 JustMock。
| 归档时间: |
|
| 查看次数: |
9122 次 |
| 最近记录: |