Это должен был быть принятый ответ

вожу юнит-тестирование, чтобы узнать, вызван ли метод.

[Fact]
        public void Can_Save_Project_Changes()
        {
            //Arrange
            var user = new AppUser() { UserName = "JohnDoe", Id = "1" };
            Mock<IRepository> mockRepo = new Mock<IRepository>();
            Mock<UserManager<AppUser>> userMgr = GetMockUserManager();
            userMgr.Setup(x => x.FindByNameAsync(It.IsAny<string>())).ReturnsAsync(new AppUser() { UserName = "JohnDoe", Id = "1" });
            var contextUser = new ClaimsPrincipal(new ClaimsIdentity(new Claim[]
            {
                new Claim(ClaimTypes.Name, user.UserName),
                new Claim(ClaimTypes.NameIdentifier, user.Id),
            }));
            Mock<ITempDataDictionary> tempData = new Mock<ITempDataDictionary>();
            ProjectController controller = new ProjectController(mockRepo.Object, userMgr.Object)
            {
                TempData = tempData.Object,
                ControllerContext = new ControllerContext
                {
                    HttpContext = new DefaultHttpContext() { User = contextUser }
                }
            };

            Project project = new Project()
            {
                Name = "Test",
                UserID = "1",
            };

            //Act
            Task<IActionResult> result = controller.EditProject(project);

            //Assert

            mockRepo.Setup(m => m.SaveProject(It.IsAny<Project>(), user));
            //This line still throws an error
            mockRepo.Verify(m => m.SaveProject(It.IsAny<Project>(), user));
            Assert.IsType<Task<IActionResult>>(result);
            var view = result.Result as ViewResult;
            Assert.Equal("ProjectCharts", view.ViewName);
            Assert.Equal("Project", view.Model.ToString());
        }

Во время отладки я могу убедиться, что метод на самом деле вызывается в контроллере,

//This controller line is touched walking through the code
repository.SaveProject(project, user);

//but this repo line is not touched
public void SaveProject(Project project, AppUser user)      

Отладка на самом деле не показывает вход в метод репозитория. Точная ошибка ниже

Ожидаемый вызов на макет хотя бы один раз, но так и не был выполнен: m => m.SaveProject (, JohnDoe)

Настройки не настроены. Выполненные вызовы: IRepository.ProjectClass IRepository.SaveProjects (ProjectClass, JohnDoe) '

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

Ответы на вопрос(2)

Ваш ответ на вопрос