Автоматическое исправление, по-видимому, неправильно создает сложные типы (сообщения QuickFix) - PullRequest
0 голосов
/ 12 марта 2020

Я пытаюсь создать сообщения QuickFix с использованием автофиксации, особенно сообщения NewOrderSingle . Но, похоже, что AutoFixture создает значения не для всех свойств, а только для некоторых из них!

При просмотре свойств некоторые имеют экземпляры, а некоторые нет.

enter image description here

Пример трассировки стека для свойства AccountType:

at QuickFix.FieldMap.GetInt(Int32 tag)
at QuickFix.FieldMap.GetField(IntField field)
at QuickFix.FIX44.NewOrderSingle.get_AccountType()

Рассмотрим следующий фрагмент кода:

[Fact]
public void Should_Test_Something()
{   
    var fixture = new Fixture();
    var newOrderSingle = fixture.Create<NewOrderSingle>();
}

А вот как выглядит NewOrderSingle Ссылка

Вопросы:

  1. Почему AutoFixture создает экземпляр например, для свойства Account, но не для AccountType?
  2. Как AutoFixture может создавать экземпляры для всех свойств?

Дополнительный вопрос:

Хотя конструктор AccountType принимает целое число, не все значения являются действительными (с точки зрения бизнеса). Как заставить AutoFixture использовать только действительные целые числа?

var message = new NewOrderSingle
{
    // Valid 
    //AccountType = new AccountType(AccountType.ACCOUNT_IS_CARRIED_ON_CUSTOMER_SIDE_OF_BOOKS)

    // Wont throw, but is not valid
    AccountType = new AccountType(100)
};
...