С возвращением, если вы пропустили первую неделю этого поста, вы можете прочитать об этом ЗДЕСЬ.

На второй неделе мы создали наш API, прочтите об этом ЗДЕСЬ, но если у вас возникли трудности с созданием своего API, вы можете пройти через мой репозиторий git, вы можете клонировать или скачать.

Теперь продолжим на третьей неделе. Мы протестировали наш API с помощью mocha и chai, протестировали с Travis CI и отправили на heroku.

Давай начнем

Чтобы создать тест для API, нам нужно установить Mocha и Chai, открыв git bash и cd в папке api, затем введите npm i mocha chai chai-http. Я не советую добавлять его в качестве зависимостей для разработчиков, потому что после установки eslint выдаст предупреждение об этом. Я советую вам прочитать эту ссылку, чтобы найти ее самостоятельно, прежде чем просматривать мой код ниже, который поможет вам лучше понять.

Итак, давайте напишем наш первый тест. Сначала мы открываем наш файл app.js или index.js и вставляем этот код для тестирования.

экспортировать приложение по умолчанию

затем создайте новую папку с именем test, потому что это папка, которую mocha будет искать по умолчанию, в папке создайте новый файл (я назвал свой orders.test.js). В файл вносим

импортировать чай из ‘chai’;

импортировать chaiHttp из ‘chai-http’;

импортировать приложение из ‘../app’;

chai.use (chaiHttp);

const should = chai.should ();

обратите внимание, я использую es6, это требование для этой задачи. Теперь мы пишем наш первый тест, мы тестируем запрос / Get.

// Тестирование / получение маршрута

description ('/ Получить заказ', () = ›{
it ('получить заказы', (done) =› {
chai.request (app)
.get ('/ api / v1 / orders ')
.end ((err, res) = ›{
res.should.have.property (' status ', 200);
res.body.should. be.a ('объект');
console.log (res.body);
done ();
});
});
}) ;

Что происходит в приведенном выше коде, мы проверяем, имеет ли запрос / Get статус 200, что означает, что если он успешен и у него должно быть тело объекта, тогда мы консоль регистрируем ответ. Давайте запустим наш тест, но подождите, mocha не знает es6, поэтому вызовет ошибку. Давайте научим mocha es6, установив пакет узла, npm i @ babel / register после установки, добавьте этот код под кодом «Пуск»,

«Test»: «mocha - require @ babel / register - exit || правда"

Что мы там делаем, мы говорим mocha до того, как он запустит тест, он должен потребовать babel / register, чтобы он мог скомпилировать его в es5 и сказать ему, что он должен выйти, если тест был успешным. символ двойной вертикальной черты и истина означают, что он не должен отображать нежелательные сообщения, которые нам не интересны. Итак, теперь, чтобы запустить наш тест, мы набираем npm run test.

Прохладный! наш тест прошел успешно, и мы получили ответ, теперь давайте напишем для / Post request,

// Test / Post route

description ('/ POST order', () = ›{
it ('post order', (done) =› {
const order = [{
name: 'fruit', < br /> size: 'large',
price: 500,
},
{
name: 'egg',
size: 'small',
цена: 50,
},];

chai.request (приложение)
.post ('/ api / v1 / orders')
.send (order)
.end ((err, res) = ›{
res.should.have.property ('status', 200);
res.body.should.be.a ('object');
console.log (res.body);
done ();
});
});
});

Это наш код / ​​Post test. Теперь давайте снова запустим npm run test.

Наш тест / Post тоже прошел успешно, это здорово. Я уверен, что код не требует пояснений, давайте теперь напишем тест для / Get order by id (/ Get /: id)

// Test / Get: id маршрута

description ('/ GET /: id order', () = ›{
it ('get order by id', (done) =› {
chai.request (app)
. get (`/ api / v1 / orders / $ {3}`)
.end ((err, res) = ›{
res.should.have.property ('status', 200);
res.body.should.be.a ('объект');
console.log (res.body);
done ();
});
});
});

Это наш тестовый код / ​​Get /: id, теперь давайте снова запустим npm run test.

Наш тест / Get /: id прошел успешно. Я уверен, что код не требует пояснений, давайте теперь напишем тест в / Поместите или обновите порядок

// Тест обновления заказа

описать ('/ PUT /: id order', () = ›{
it ('update order by id', (done) =› {
const order = {
name: ') яйцо ',
size:' small ',
price: 50,
};

chai.request (app)
.put (`/ api / v1 / orders / $ {3}`)
.send (order)
.end ((err, res) = › {
res.should.have.property ('status', 200);
res.body.should.be.a ('object');
console.log (res.body );
done ();
});
});
});

Это наш тестовый код / ​​Put или update, теперь давайте снова запустим npm run test.

Наш тест прошел успешно, у нас все хорошо, лол. И напоследок напишем тест для / Удалить заказ

// удаляем тестовый API заказа

description ('/ DELETE /: id order', () = ›{
it ('delete order by id', (done) =› {
chai.request (app)
. delete (`/ api / v1 / orders / $ {3}`)
.end ((err, res) = ›{
res.should.have.property ('status', 200);
res.body.should.be.a ('объект');
console.log (res.body);
done ();
});
});
});

давайте запустим npm run test…

Все наши тесты прошли успешно, теперь вы можете написать тест для Meals Api и Menu Api. Затем мы добавляем .travis.yml в наш код, но перед этим вы должны прочитать, как настроить Travis CI ЗДЕСЬ. Теперь создайте новый файл в корневом каталоге с именем .travis.yml и вставьте этот код,

язык: node_js
node_js:
- «стабильный»
кеш:
каталоги:
- «node_modules»
before_install: cd ./api
установить:
- npm install
скрипт:
- npm run test

Мы говорим Трэвису зайти в нашу папку api, а затем установить зависимости нашего узла, потому что мы игнорируем его и запускаем npm run test. Затем запустите необходимые команды git и нажмите на github, затем проверьте свою панель управления Travis, вы должны увидеть сборку, и она должна быть успешной.

Теперь мы закончили с Трэвисом, и теперь переходим к развертыванию на heroku. Это довольно просто, просто прочтите об этом ЗДЕСЬ.

Наконец, я увидел, как люди борются с кодеклиматом и комбинезоном, я тоже боролся с этим, но смог заставить его работать. Начнем с установки зависимостей,

npm i codeclimate-test-reporter комбинезон mocha-lcov-reporter nyc - save-dev

затем в свой файл package.json вставьте этот код

«Generate-lcov»: «nyc report - reporter = text-lcov› lcov.info »,
« cosuit-cover »:« cosuit ‹lcov.info»,
«codeclimate-охват»: « codeclimate-test-reporter ‹lcov.info»,
«охват»: «nyc npm test && npm run generate-lcov && npm run coshops-охват && npm run codeclimate-охват»

Теперь перейдите в codeclimate, авторизуйте его на своем github и включите доступ к репозиторию Book a Meal. После этого перейдите в настройки репо и нажмите на вкладку Тестовое покрытие. Скопируйте ИДЕНТИФИКАТОР ТЕСТОВОГО ОТЧЕТА, теперь откройте файл .travis.yml и вставьте этот код ниже.

after_success:
- покрытие запуска npm
env:
global:
- CODECLIMATE_REPO_TOKEN = вставьте сюда свой ИДЕНТИФИКАТОР ТЕСТОВОГО ОТЧЕТА

Это небезопасно, вам следует зашифровать свой код, но оставим это так.

Затем перейдите в комбинезоны, авторизуйте его на своем github, например, codeclimate и получите доступ к Book a Meal, вы должны увидеть некоторые инструкции. А теперь давайте сделаем это шаг за шагом

В папке api создайте новый файл .coshopss.yml и вставьте предоставленный вам код, он должен выглядеть так

service_name: travis-pro
repo_token: ваш токен репо

Сохраните весь файл и отправьте на github. Вы можете запустить покрытие запуска npm на своем компьютере, если увидите такие ошибки, как CODECLIMATE_REPO_TOKEN не найден. CODECLIMATE_REPO_TOKEN должен быть указан как переменная среды. Не обращайте внимания на это и нажмите на github, он должен нормально работать на https://travis-ci.org, затем проверьте свою панель управления комбинезоном и панель управления климатом, вы должны увидеть свое тестовое покрытие.

Это с 3 недели.