Извлечение данных в модульный тест AAA паттерна

В схеме "AAA", где извлечение данных акта должно быть записано?
В Акте или в разделе Утверждение?

Рассмотрим этот модульный тест, извлечение двух человек, должно ли оно быть в Акте, как в примере или в Утверждении? Мы хотели бы сделать стандарт для всех наших UT в компании.

[Test]
public void Test()
{
    // Arrange
    var p1 = new Person();
    var p2 = new Person();
    Session.Save(p1);
    Session.Save(p2);

    // Act
    var result = new PersonQuery().GetAll();
    var firstPerson = result[0];
    var secondPerson = result[1];

    // Assert
    Assert.AreEqual(p1.Id, firstPerson.Id);
    Assert.AreEqual(p2.Id, secondPerson.Id);        
}

(пожалуйста, не обращайте внимания на то, что в этом простом тесте я могу написать Assert.AreEqual(p1.Id, result[0].Id);)
Я знаю, что это не огромная проблема, но я все еще хочу знать, как делать вещи лучше всего.

2 ответа

Решение

Это должно произойти на этапе подтверждения:

[Test]
public void Test()
{
    // Arrange
    var p1 = new Person();
    var p2 = new Person();
    Session.Save(p1);
    Session.Save(p2);

    // Act
    var result = new PersonQuery().GetAll();

    // Assert
    var firstPerson = result[0];
    var secondPerson = result[1];
    Assert.AreEqual(p1.Id, firstPerson.Id);
    Assert.AreEqual(p2.Id, secondPerson.Id);        
}

Act Этап включает только вызов тестируемого метода.

Это зависит от практического правила - этап Act представляет собой выполнение тестируемой бизнес-логики. В вашем случае это зависит от того, влияет ли извлечение на какую-либо бизнес-логику, если result[i] Indexer - это простой инструмент для доступа к элементам коллекции. Act так как вы уже извлекли данные в result переменная, иначе - было бы Act,

Другие вопросы по тегам