Как проверить добавление дубликата при использовании базы данных в памяти?
Есть класс описывающий справочник
[Index(nameof(Name), Name = "IX_Handbook", IsUnique = true)]
public class Handbook
{
public int Id { get; set; }
[Required]
[MaxLength(50)]
public string Name { get; set; }
public string Description { get; set; }
}
Метод контроллера для добавления "Справочника" выглядит следующим образом
[HttpPost]
public async Task<IActionResult> Create(EditModel editModel)
{
try
{
var handbook = new Handbook
{
Name = editModel.Name,
Description = editModel.Description
};
_context.Add(handbook);
_context.SaveChanges();
return Ok();
}
catch (Exception e)
{
return BadRequest(e.Message);
}
}
Для тестирования функционала планирую использовать базу данных в памяти(Microsoft.EntityFrameworkCore.InMemory), пишу тест проверяющий попытку добавить уже существующий справочник
[Fact]
public async void CreateHandbook()
{
var response = await _client.PostAsJsonAsync("api/handbooks", new Core.Models.Handbook { Name = "Заготовки" });
Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);
}
При использовании реальной базы данных тест проходит успешно, для базы данных в памяти тест падает, дубликат добавляется.
Как при использовании базы данных в памяти проверить указанный функционал?
База данных microsoft sql server, ef core и связанные пакеты version 5.0.17