gpt4 book ai didi

c# - 模拟 HttpRequestMessage

转载 作者:行者123 更新时间:2023-11-30 18:19:05 29 4
gpt4 key购买 nike

我有一个 Controller Action :

[HttpPost]
[EnableQuery]
[ODataRoute("PostData")]
public async Task<string> PostData(HttpRequestMessage message)
{

//Do operations
}

我需要为这个方法创建一个模拟,但我不知道如何传递参数“HttpRequestMessage”,

因为如果有任何变量要传递,那么它只是用 string 或 int 之类的类型初始化。

如何在 mock 中处理这种情况?

最佳答案

HttpRequestMessage 是非常可变的:

public class HttpRequestMessage : IDisposable
{
[... ctors]

public Version Version { get; set; }
public HttpContent Content { get; set; }
public HttpMethod Method { get; set; }
public Uri RequestUri { get; set; }
public HttpRequestHeaders Headers { get; }
public IDictionary<string, object> Properties { get; }

[... Dispose, ToString]
}

因此,如果您只需要设置 RequestUri,例如,您可以:

var requestMessage = new HttpRequestMessage() { RequestUri = new Uri("http://www.google.com") };
yourClassInstance.PostData(requestMessage);

即使您需要添加一些 header 或 properties GetRequestContext can create HttpRequestContext from , 你可以这样做

requestMessage.Headers.Add("h", "v");
requestMessage.Properties.Add("p", "v");

这种设计(HttpRequestMessage)根本不符合函数式编程原则,但至少你可以轻松测试它。

关于c# - 模拟 HttpRequestMessage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39785282/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com