asp.net core の Controller で body から直接読み込みほげほげすることはよくあると思います。 そんなプログラムのUnit Test の書き方についてです。 Controller に生えている Request プロパティの Body に直接データをぶち込もうとすると 読み取り専用になっているためテスト時に使う値をセットすることができません。
原因
// 読み取り専用になっている
Controller 名.Request.Body
対策
// Controller Context 経由で値をセットする Controller名.ControllerContext = new ControllerContext(); Controller名.ControllerContext.HttpContext = new DefaultHttpContext(); Controller名.ControllerContext.HttpContext.Request.Body = new MemoryStream(hoge);