Настройте свойство autofixture с ранее установленным свойством

В EF (Entity Framework) распространенным шаблоном является ссылка на дочернюю сущность и ключ, который таблица использует, сопоставленный как свойство родительской сущности.

При использовании autofixture для насмешки над родительским объектом я хочу найти способ установить первичный ключ дочернего объекта с помощью внешнего ключа, который был установлен ранее

_fixture.Build<Parent>()
.With(x=>x.ChildId)
.With(x=>x.Child, 
    _fixture.Build<Child>()
        .With(child=>child.Key,parent => parent.ChildId) //This is not supported in AutoFixture
        .Create()
    )
.Create();

person crlsktr    schedule 19.06.2020    source источник


Ответы (1)


Не могли бы вы предоставить больше информации о том, что вы пытаетесь решить? Вы используете EF или EF Core? Решение может отличаться в зависимости от того, какое из них вы используете.

В последней версии Entity Framework, насколько я знаю, вы не получите ключ, пока не сохраните объект в базе данных. В этом случае вы можете использовать один из поставщиков баз данных, которые Microsoft предлагает для модульного тестирования. В вашем случае, поскольку вы используете реляционные функции EF, вы можете использовать поставщика SQLite. После того, как вы сохранили свою сущность, внешний ключ и свойства навигации должны содержать все необходимые данные. https://docs.microsoft.com/en-us/ef/core/miscellaneous/testing/sqlite

Если вам нужно упростить переход между EF Core и AutoFixture, вы можете использовать пакет EntityFrameworkCore.AutoFixture.

person Andrei Ivascu    schedule 07.07.2020