AutoFixture не работает с EF EntityObject
объектами, по моему опыту. Причина в том, что он хочет присвоить каждому свойству объекта. Да, вы можете указать, чтобы пропустить определенные свойства с помощью .Without()
, но это становится довольно утомительным, когда вы хотите "подделать" только половину имеющихся у вас свойств. Ваш пример кода только царапает поверхность и уже затеняет цель теста.
Мне не удалось найти способ запретить AutoFixture когда-либо назначать определенные типы, особенно открытые универсальные типы.
Так что я не думаю, что вы сможете использовать AutoFixture для этого (пока! - это с открытым исходным кодом, и кто-то может внести исправление ...).
С другой стороны, я не согласен с @Ladislav - тестирование с EntityObject
объектами работает нормально. Автофиксирование кажется довольно безразличным к этому, но это не значит, что вы не можете проверить! Вам просто нужно назначить тестовые значения с помощью чего-то другого, кроме AutoFixture напрямую.
Вы, конечно, можете сделать что-то вроде:
myEntity = new SomeEntity
{
Foo = fixture.CreateAnonymous<string>(),
Bar = fixture.CreateAnonymous<int>()
};
.. и т.п.