2016-09-30 5 views
2

私は、コントローラのアクションを持っている:モッキングHttpRequestMessage

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

//Do operations 
} 

私はこのメソッドのモックを作成する必要がありますが、私は、パラメータを渡す方法を取得していないのです「HttpRequestMessage」、

ので、もしそこに文字列やintのような型で初期化するだけです。

モックでこの状態を処理するにはどうすればよいですか?

+0

リクエストのインスタンスを作成し、テストに関連するものを入力してテスト中のメソッドに渡します。 – Nkosi

答えて

0

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); 

あなたには、いくつかのヘッダやproperties GetRequestContext can create HttpRequestContext fromを追加する必要がある場合であっても、することができますdo

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

このデザイン(HttpRequestMessage)は関数型プログラミングの原則を一切守っていませんが、少なくとも簡単にテストできます。

関連する問題