Использование TryUpdateModel в контроллере для обновления данных, которые не могут обновить данные. Блок теста asp. net mvc - PullRequest
0 голосов
/ 22 января 2020

Во время выполнения контрольного примера получается, но данные не обновляются в базе данных. Я получаю системное нулевое исключение, которое разрешается с помощью контекста контроллера, но не может обновить данные

**Unit test code**

 CANVAS_FIRM Firm = new CANVAS_FIRM
            {
                AUM = FirmToUpdate.AUM,
                CANVAS_ADVISOR = FirmToUpdate.CANVAS_ADVISOR,
                CANVAS_FIRM_ID = FirmToUpdate.CANVAS_FIRM_ID,
                FIRM_NAME = FirmToUpdate.FIRM_NAME,
                Street = FirmToUpdate.Street + "_" + maxId,
                City = FirmToUpdate.City + "_" + "Updated",
                State = FirmToUpdate.State + "_" + "Updated",
                Zip = FirmToUpdate.Zip,
                HasDiscretion = FirmToUpdate.HasDiscretion,
                ClientLogoUrl = FirmToUpdate.ClientLogoUrl,
                PlatformIds = FirmToUpdate.PlatformIds
            };

UsersController _requestUsersController = new UsersController();

 _requestUsersController.ValueProvider = new FormCollection().ToValueProvider();
            var request = new Mock<HttpRequestBase>();
            //request.Setup(r => r.HttpMethod).Returns("POST");
            var mockHttpContext = new Mock<HttpContextBase>();
            mockHttpContext.Setup(c => c.Request).Returns(request.Object);
            var controllerContext = new ControllerContext(mockHttpContext.Object, new RouteData(), new Mock<ControllerBase>().Object);
            _requestUsersController.ControllerContext = controllerContext;

            JsonResult result = _requestUsersController._SaveFirm(Firm);

Код контроллера

CANVAS_FIRM ExistingFirm = CanvasFirmRepository.GetFirmONLYForEditing_DeveloperBeware(db, Firm.CANVAS_FIRM_ID);
                Succeeded = TryUpdateModel(ExistingFirm, "Firm");                
                Firm = CanvasFirmRepository.SaveFirm(db, ExistingFirm, true);
...