Извлечение данных в модульный тест 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
,