Как проверить добавление дубликата при использовании базы данных в памяти?

Есть класс описывающий справочник

[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


Ответы (0 шт):