Mocha - это хорошо известный фреймворк для тестирования Node.js. Он может поддерживать выходы как xUnit, так и TAP, и разработчики могут выбирать свою любимую библиотеку утверждений. Гибкость и обширное сообщество Mocha по-прежнему делают его отличным выбором для тестирования приложений Begin.
Как вы, вероятно, знаете, инвестирование в тестирование поможет вам писать приложения с высокой степенью поддержки и поможет гарантировать, что новый код с меньшей вероятностью вызовет регрессию.
В этом посте мы продемонстрируем основы тестирования с помощью Mocha в бессерверном приложении в Начать; пример приложения в этом посте даст те же результаты, что и наши статьи о тестировании с помощью Jest и TAP.
Попробуйте Mocha с Begin прямо сейчас!
Нажмите эту кнопку, чтобы развернуть новый пример приложения Node.js + Mocha для запуска через 15 секунд:
Тестирование библиотек
Если вы видели наши предыдущие примеры бессерверного тестирования с использованием TAP и Jest, то это будет вам очень знакомо. Begin поддерживает любую платформу тестирования, потому что мы стремимся помочь вашей команде сосредоточиться на использовании инструментов, которые работают на вас.
Во-первых, давайте создадим ловушку для Mocha, которая будет запускать и останавливать @architect/sandbox
(локальную среду разработки, которая позволяет разработчикам работать локально, эмулируя поведение API Gateway, Lambda-функций и DynamoDB), а также необходимые зависимости для выполнения ваших тестов.
// test/get-index-test.js let sandbox = require('@architect/sandbox') let data = require('@begin/data') let tiny = require('tiny-json-http') let assert = require('assert') describe('mocha app', () => { before(async () => { await sandbox.start({ quiet: true }) }) after(async () => { await sandbox.end() }) // more tests will go here }
Тестирование `GET /` route
В Mocha мы описываем наши тесты и то, что они должны делать. Этот первый тест гарантирует, что GET
запрос к нашей домашней странице завершится без ошибок. Теперь мы знаем, что наш обработчик Lambda на src/http/get-index/index.js
работает.
// test/get-index-test.js ... describe('@http', function() { it('should get /', async () => { let url = 'http://localhost:3333' let result = await tiny.get({ url }) }) }) ...
Тестирование `@begin/data
`
Несмотря на то, что этот пример не реализует Begin Data, наличие этого тестового примера полезно для изучения того, как работает API. Мы протестируем data.set()
и data.get()
на запись и чтение некоторых данных в локальную базу данных в памяти, работающую в песочнице. Этот тип эфемерной среды идеально подходит для выполнения быстрых тестов без ущерба для остальных этапов сборки.
// test/get-index-test.js ... describe('@begin/data', function() { it('data.set', async () => { let result = await data.set({table: 'tmp'}) assert.equal(result.table, 'tmp') console.log(result) }) it('data.get', async () => { let result = await data.get({table: 'tmp'}) assert.equal(result.length, 1) console.log(result) }) }) ...
Автоматизируйте тестирование при каждом развертывании
Пришло время увидеть ваше красивое приложение в действии. Отправка кода на GitHub автоматически запустит тесты, определенные в вашем package.json
(и развернет ваш код в среде staging
). Просмотрите результаты результатов тестирования вашей последней сборки в представлении «Начать действие»:
Следующие шаги
- Разверните приложение-пример тестирования Mocha, чтобы начать за 15 секунд:
- 🌟 Оцените (и отметьте!) Открытое ядро Begin OpenJS Architect на GitHub