目前,我正在通过使用HttpClient
进行HTTP调用来检索文件。
mRetriever = new MyRetriever(new HttpClient());
result = mRetriever.MyRetriever("https://some.url/myFile.js");
我想嘲笑这个电话。看了here后,我将其添加到我的代码中:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
namespace MyTestModule
{
public class FakeResponseHandler : DelegatingHandler
{
private readonly Dictionary<Uri, HttpResponseMessage> _FakeResponses = new Dictionary<Uri, HttpResponseMessage>();
public void AddFakeResponse(Uri uri, HttpResponseMessage responseMessage)
{
_FakeResponses.Add(uri, responseMessage);
}
protected async override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, System.Threading.CancellationToken cancellationToken)
{
if (_FakeResponses.ContainsKey(request.RequestUri))
{
return _FakeResponses[request.RequestUri];
}
else
{
return new HttpResponseMessage(HttpStatusCode.NotFound) { RequestMessage = request };
}
}
}
}
但是,我不确定如何继续前进:
我添加了这段代码,其中myLocalFile
是我想要作为回复返回的文件。
FakeResponseHandler fakeResponseHandler = new FakeResponseHandler();
HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.OK);
response.AddHeader("content-disposition", "attachment;filename=" + "./myLocalFile");
fakeResponseHandler.AddFakeResponse(new Uri("https://some.url/myFile.js"), response);
Mock<HttpClient> mockHttpClient = new Mock<HttpClient>();
HttpClient httpClient = new HttpClient(fakeResponseHandler);
然而,我不知道:
1.如何在代码中引用本地文件系统中的文件。
2.如何将该文件添加到HttpResponseMessage
。
目前我正在这样做:
response.AddHeader("content-disposition", "attachment;filename=" + "./myLocalFile");
抛出此错误:
'HttpResponseMessage'不包含'AddHeader'的定义 没有扩展方法'AddHeader'接受第一个类型的参数 可以找到'HttpResponseMessage'(你错过了一个using指令吗? 或汇编参考?)