Ложная вставка, возвращающая 0 как entity.Id, но работающая, когда приложение размещено и запрашивает с помощью Curl

    public class ArticlesController : Controller
    {
        private readonly IArticleRepository _articleRepository;

        public ArticlesController(IArticleRepository articleRepository)
        {
            _articleRepository = articleRepository;
        }

 public async Task<IActionResult> Post([FromBody]ArticleModel model)
        {
            var article = create article object by fill input from model ;
            await _articleRepository.InsertAsync(article);
            return Created($"articles/{article.Id}", article);
        }
    }

public interface IArticleRepository : IGenericRepository<Article>
    {
    }

public abstract class GenericRepository<T> : IGenericRepository<T>
        where T : BaseEntity, new()
    {
 public async Task InsertAsync(T entity)
        {
            _dbContext.Set<T>().Add(entity);
            await _dbContext.SaveChangesAsync();
        }
    }

- Когда я высмеиваю вставку, она возвращает 0 как entity.Id, но когда я запускаю после размещения приложения. Вставка работает и возвращает entity.id > 0. Что я делаю не так? Я довольно новичок в moq и модульном тестировании - метод испытаний

     private Mock<IArticleRepository> _articleRepositoryMock = new Mock<IArticleRepository>();

        public ArticlesControllerTests()
        {
            _articlesController = new ArticlesController(_articleRepositoryMock.Object);
        }

 [Fact]
        public async Task Post_SingleItem()
        {
            var article = Builder<Article>.CreateNew().Build();
            _articleRepositoryMock.As<IGenericRepository<Article>>().Setup(m=>m.InsertAsync(article)).Returns(Task.CompletedTask);

            var result = await _articlesController.Post(atricleModel);

            //verify after casting the result to desired object and check .Id > 0 fails


        }

0 ответов

Другие вопросы по тегам