我有一个控制器操作:
[HttpPost]
[EnableQuery]
[ODataRoute("PostData")]
public async Task<string> PostData(HttpRequestMessage message)
{
//Do operations
}
我需要为这个方法创建一个模拟,但是我没有得到如何传递参数&#34; HttpRequestMessage&#34;,
因为如果有任何要传递的变量,那么它只是初始化类型为string或int。
如何在mock中处理这个条件?
答案 0 :(得分:0)
$data = [[
'country' => 'us',
'sector' => 'retail',
]];
非常易变:
json_encode($data[0]);
// {"country":"us","sector":"retail"}
因此,如果您只需要设置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]
}
即使您需要添加一些标题或properties GetRequestContext
can create HttpRequestContext
from,也可以
RequestUri
这个设计(var requestMessage = new HttpRequestMessage() { RequestUri = new Uri("http://www.google.com") };
yourClassInstance.PostData(requestMessage);
)根本不符合函数式编程原则,但至少你可以轻松地测试它。