2016-12-21 21 views
2

Я создаю тесты против репозитория Entity Framework 6. Из-за зависимости между типом продукта и кредитом, я получаю круговую ошибку ссылки при использовании Autofixture.AutoMoq. Есть ли атрибут, который можно разместить над методом тестирования, поэтому я могу исключить следующую строку кода (и связанные с ней элементы в примере ниже): "fixture.Inject(Enumerable.Empty<Loan>());"Есть ли атрибут Autofixture, который можно использовать вместо fixture.Inject() в коде?

Я использую XUnit 2.1.0.3179, Autofixture 3.50.2.0 , Autofixutre.AutoMoq 3.50.2.0, AutoFixture.Xnit2, Moq 4.5.29.0

Вот некоторые дополнительные детали, которые могут быть полезны ...

займа (N) --- (1) ProductType

Из-за круговой ссылки в моей модели EF6 я не могу сделать следующее:

[Theory, AutoMoqData] 
public void ProductTypes_GetList() 
    List<ProductType> productTypeList, 
    [Frozen] Mock<IProductTypeRepository> productTypeRepo) 
{ 

Вместо этого я должен сделать следующее, чтобы избежать циклических ссылок вопрос:

var fixture = new Fixture().Customize(new AutoMoqCustomization()); 
    // Avoid circular dependency in EF. 
    // Eliminating the many side of the relationship. 
    fixture.Inject(Enumerable.Empty<Loan>()); 

    var productTypeRepo = fixture.Freeze<Mock<IProductTypeRepository>>(); 

    // Create a list of product types. 
    List<ProductType> productTypeList = fixture.Create<List<ProductType>>(); 

    productTypeRepo.Setup(_ => _.GetAll()).Returns(productTypeList); 

Я хотел бы знать, можно ли достичь своей цели и сократить строки кода.

Благодарим вас за время и предложения.

Майк

ответ

2

Вы можете использовать настройки, чтобы сделать это, и обернуть свою собственную настройку в атрибуте ..

Heres пример настройки:

fixture.Customize<ProductType>(x => x.Without(y => y.ProductTypes)); 

Вы можете обернуть настройки вверх в класс, который реализует ICustomization и, наконец, следуя указаниям в Encapsulating AutoFixture Customizations от Марка Семанна, вы можете полностью обернуть этот атрибут, чтобы вы могли:

[Theory, AutoMoqData, MyCustomizations] 
public void ProductTypes_GetList() 

 Смежные вопросы

  • Нет связанных вопросов^_^