Chcę przetestować następujący wiersz kodu:Mocking HttpPostedFileBase i InputStream do jednostki testu
...
Bitmap uploadedPicture = Bitmap.FromStream(model.Picture.InputStream) as Bitmap;
...
obraz jest nieruchomość w swoim rodzaju modelu HttpPostedFileBase. Więc chciałbym mock właściwość HttpPostedFileBase dla testów jednostkowych:
model.Picture = new Mock<HttpPostedFileBase>().Object;
Nie ma problemu w ogóle.
Teraz muszę kpić z InputStream, w przeciwnym razie jest zerowy:
model.Picture.InputStream = new Mock<Stream>().Object;
To nie działa jako InputStream jest tylko do odczytu (nie ma sposobu setter):
public virtual Stream InputStream { get; }
Czy istnieje dobry i czysty sposób na rozwiązanie tego problemu? Jednym z rozwiązań byłoby nadpisanie HttpPostedFileBase w klasie pochodnej dla mojego testu jednostkowego. Każdy inny pomysł?
Zrobiłem to całkiem podobnie, więc zaznaczam twoją odpowiedź jako poprawną. – mosquito87