Ложная вставка, возвращающая 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
}