Извлечение данных в модульный тест AAA паттерна - PullRequest
4 голосов
/ 03 января 2012

В шаблоне "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 ]

7 голосов
/ 03 января 2012

Это должно происходить в фазе подтверждения:

[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 включает только вызов тестируемого метода.

1 голос
/ 03 января 2012

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

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