Объяснение паттернов Arrange, Act, Assert с использованием Jasmine.

Тестирование - неотъемлемая часть создания программного обеспечения. Когда дело доходит до готовых к производству приложений, нам нужен надежный и хорошо протестированный код с минимальным количеством ошибок. Для тестирования вашего кода доступно множество методов. В этой статье я рассмотрю один из самых популярных методов - модульное тестирование. Модульное тестирование включает в себя тестирование определенных модулей или фрагментов кода в вашем приложении. При написании тестов вы, вероятно, захотите следовать некоторому шаблону для написания хорошо структурированных, удобочитаемых тестов. Здесь на помощь приходит паттерн AAA. AAA расшифровывается как Arrange, Act и Assert. Это отличный способ убедиться, что мы охватываем все аспекты тестирования модуля кода.

A измените состояние данных, чтобы настроить их для тестирования.

Обращение к данным с помощью некоторого метода, выполняющего действие.

Мы утверждаем, что результат обработки этих данных соответствует нашим ожиданиям.

Это основной процесс использования шаблона AAA в любой среде тестирования. Чтобы разбить каждый из них на примере кода, мы будем использовать среду тестирования Javascript Jasmine. Если вы раньше не слышали о Jasmine, он похож на другие среды тестирования, с которыми вы, возможно, знакомы, такие как RSpec и JSpec. А теперь давайте напишем тесты!

Реализация паттерна AAA

В нашем примере мы будем тестировать модель User в Javascript. Наш конструктор класса User получит объект с полным именем, чтобы установить его имя, отчество и фамилию.

Наш класс User содержит методgetFullName(), который должен возвращать полное имя пользователя. Итак, как мы можем проверить, что этот метод делает то, что он говорит? Мы можем написать модульный тест, чтобы убедиться, что мы получаем правильные значения. следующий код делает именно это!

Итак, первая часть нашего набора тестов - это метод describe. describe просто объединяет код, который мы тестируем. Затем it часть нашего теста говорит, что на самом деле должен делать этот конкретный фрагмент кода. В этом случае он должен вернуть полное имя. Внутри тела it мы реализуем упорядочивание, действие и утверждение, возлагая на каждую часть особую ответственность. Аранжировка создает новый экземпляр User class, в то время как act выполняет действие с getFullName()методом, который мы тестируем. Затем Assert заверяет нас, является ли результат оценки от вызова getFullName() для нашего пользователя именно тем, что нам нужно.

Вывод

Шаблон AAA дает нам простые, но эффективные шаги для тестирования нашего кода. Каждый шаг в этом шаблоне имеет свою работу. Шаг упорядочивания устанавливает наши данные, в то время как шаг действия выполняет действия, необходимые для их тестирования, и утверждение определит, является ли результат от воздействия на эти данные тем, что мы ожидали.