私はコントローラで、私がHTTPリクエストのヘッダーに値を期待する単体テストという機能を持っています。 HttpContextは読み取り専用なので初期化できません。.NETコアのMVCコントローラをユニットテストするための模擬HttpContext?
私のコントローラ機能は、「デバイスID」
[TestMethod]
public void TestValuesController()
{
ValuesController controller = new ValuesController();
//not valid controller.HttpContext is readonly
//controller.HttpContext = new DefaultHttpContext();
var result = controller.Get();
Assert.AreEqual(result.Count(), 2);
}
サードパーティのライブラリを使用せずにこれを行うにはストレートな方法はあるのHTTPリクエストヘッダの値を期待しますか?
* HttpContextを使用しないでください。コントローラを使用することの全ポイントは、データがコントローラのパラメータを通って来ることです。コントローラがHttpContextを使用してWebFormsページのようにデータを読み取ると、問題が発生します。 –
@PanagiotisKanavosヘッダーの値は、コールがどのモバイルデバイスから送信されたかを示す情報です。これは、正しいデータを検索するために必要なことです。カスタムアクションフィルタによって処理される認証にIDが必要なため、デバイスIDはヘッダーに含まれています。デバイスIDをルートパラメータとして渡すこともできますが、冗長になります –
FromHeaderAttributeをチェックするだけでなく、重複をチェックしてください。 HttpContextは今設定から注入可能です –