SpecFlow - Как настроить тестовые данные для объекта с пользовательским типом - PullRequest
3 голосов
/ 06 марта 2020

Используя SpecFlow в приложении C# -Entity Framework, я пытаюсь настроить тестовые данные для сущности нижеуказанной структуры.

public partial class TYPE1
{
    public int Prop1 { get; set; }
    public virtual ICollection<TYPE2> Prop2 { get; set; }
}

public partial class TYPE2
{
    public int Prop3 { get; set; }
}

Тестовые данные:

Given I have a Type1 record with following data
| Prop1 | Prop2 |
| 123   | 0     |


[Given(@"I have a Type1 record with following data")]
public void GivenIHaveAType1RecordWithFollowingData(Table table)
{
    foreach (var row in table.Rows)
    {
        var record =
            this.PopulateModelFromTableRow<TYPE1>(row);
        this.test.DbContext.TYPE1.Add(record);
    }
}

Я пытаюсь найти способ назначить Prop2 список значений типа 2. Как я могу это сделать?

1 Ответ

2 голосов
/ 06 марта 2020

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

Given I have a Type1 record with following data
    | Prop1 |
    | 123   |
And the Type1 record I just created as the following Prop2:
    | Prop2 |
    | 0     |
    | 4     |

На первом шаге будет создан новый объект Type1 и сохранен его с пустой коллекцией Prop2 , Следующий шаг должен извлечь объект Type1, который вы только что создали, и добавить элементы в коллекцию, используя таблицу данных.

Gherkin никогда не был предназначен для создания сложных объектов, содержащих коллекции, за один шаг. Есть способы обойти это, но они часто приводят к тестам, которые труднее читать и поддерживать. Рекомендуется заполнять свойства коллекции объекта на специальном этапе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...