public void CallUploadImage_WhenModelUploadIsValid() { // Arrange var username = "******"; var user = new User(); var viewModel = new IndividualViewModel(); var mockedIndividualService = new Mock <IIndividualService>(); var mockedPhotoHelper = new Mock <IPhotoHelper>(); var mockedUserProvider = new Mock <IUserProvider>(); mockedUserProvider.Setup(x => x.FindByName(It.IsAny <string>())).Returns(user); mockedUserProvider.Setup(x => x.Update(user)).Verifiable(); var mockedMapper = new Mock <IMapper>(); mockedMapper.Setup(x => x.Map <SofiaDayAndNight.Data.Models.Individual>(It.IsAny <IndividualViewModel>())) .Returns(new SofiaDayAndNight.Data.Models.Individual()); var mockedUpload = new Mock <HttpPostedFileBase>(); mockedUpload.SetupGet(x => x.ContentLength).Returns(1); mockedPhotoHelper.Setup(x => x.UploadImage(mockedUpload.Object)).Verifiable(); var principal = new Mock <IPrincipal>(); var controllerContext = new Mock <ControllerContext>(); principal.SetupGet(x => x.Identity.Name).Returns(username); controllerContext.SetupGet(x => x.HttpContext.User).Returns(principal.Object); var controller = new IndividualController( mockedIndividualService.Object, mockedMapper.Object, mockedPhotoHelper.Object, mockedUserProvider.Object); controller.ModelState.Clear(); controller.ControllerContext = controllerContext.Object; // Act controller.Submit(viewModel, mockedUpload.Object); // Assert mockedPhotoHelper.Verify(x => x.UploadImage(mockedUpload.Object), Times.Once); }