我在 nUnit 中运行测试,通常我可以模拟依赖项,然后返回某些值或抛出错误。
我有一个作为内部 HttpClient 的类,我想测试这个类,我有什么选择。
这是我的代码,它不完整,以免淹没消息。如您所见,我在内部使用 HttpClient 而不是作为依赖项注入。该类引发了许多自定义异常,我想将这些最小起订量,否则我需要传递真实的用户名和密码,这将为我提供引发异常所需的状态代码。
有人有想法吗?如果我不能模拟 httpclient,那么我永远无法测试我的类是否会引发异常。
我真的必须将 HttpClient 更改为对构造函数的依赖吗?
public bool ItemsExist(string itemValue)
{
var relativeUri = string.Format(UrlFormatString, itemValue.ToUpper());
var uri = new Uri(new Uri(this.baseUrl), relativeUri);
using (var client = new HttpClient())
{
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", this.encodedCredentials);
client.DefaultRequestHeaders.Accept.Add(
new MediaTypeWithQualityHeaderValue("application/json"));
var response = client.GetAsync(uri).Result;
switch (response.StatusCode)
{
case HttpStatusCode.Unauthorized:
// DO something here
throw new CustomAuthorizationException();
case HttpStatusCode.Forbidden:
throw new CustomAuthenticationException();
}
return true;