次のコード行をテストしたいと思います。
...
Bitmap uploadedPicture = Bitmap.FromStream(model.Picture.InputStream) as Bitmap;
...
Pictureは、私のモデルタイプHttpPostedFileBaseのプロパティです。だから私はユニットテストのためにHttpPostedFileBaseプロパティをモックしたいと思います:
model.Picture = new Mock<HttpPostedFileBase>().Object;
全く問題なし。
ここで、InputStreamをモックする必要があります。そうしないと、nullになります。
model.Picture.InputStream = new Mock<Stream>().Object;
InputStreamは読み取り専用であるため、これは機能しません(setterメソッドがありません)。
public virtual Stream InputStream { get; }
この問題を処理するための適切でクリーンな方法はありますか?1つの解決策は、単体テストの派生クラスでHttpPostedFileBaseをオーバーライドすることです。他のアイデアはありますか?