Итак, сегодня мне удалось зайти в блог чуть раньше, несмотря на отвлекающие факторы в Slack/Twitter/электронной почте, но я собираюсь придерживаться потока «добавления тестов», который я начал вчера, чтобы получить несколько спортивных повторений. в тестировании узла. Тем не менее, у нас есть довольно серьезная ошибка, когда наши электронные письма помечаются как спам, что может помешать мне тратить гораздо больше времени на код в этих сеансах. Могу ли я позволить себе проводить 15-минутные тесты узлов каждое утро в течение следующих двух недель? Так много регулярных мероприятий по обслуживанию станций, что дни переполнены!
Во всяком случае, по крайней мере со вчерашнего дня у нас есть несколько тестов в проекте greeter_bot
. Давайте перейдем к совершенно другому проекту project_greeter_bot
. С чего бы мне начать? Возьмите идентификатор задачи для создания тестов из самого проекта, это https://github.com/AgileVentures/project_greeter_bot/issues/5 — забавно, как это похоже на то, чтобы растопить лед на чем-то для того, чтобы протолкнуть небольшое чувство я не знаю, с чего начать. Поднимите терминал в нужном каталоге. Нет невыполненных запросов на включение в проект, вытащите последний код из мастера:
[tansaku@Samuels-MBP:~/Documents/Github/AgileVentures/project_greeter_bot (master)]$
→ git pull origin master
remote: Counting objects: 1, done.
remote: Total 1 (delta 0), reused 1 (delta 0), pack-reused 0
Unpacking objects: 100% (1/1), done.
From https://github.com/AgileVentures/project_greeter_bot
* branch master -> FETCH_HEAD
bc396db..46944ce master -> origin/master
Updating bc396db..46944ce
Fast-forward
server.js | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
создать ветку для новых тестов
→ git checkout -b 5_add_tests
Switched to a new branch '5_add_tests'
[tansaku@Samuels-MBP:~/Documents/Github/AgileVentures/project_greeter_bot (5_add_tests)]$
установить мокко
[tansaku@Samuels-MBP:~/Documents/Github/AgileVentures/project_greeter_bot (5_add_tests)]$
→ npm install mocha --save-dev
[email protected] /Users/tansaku/Documents/GitHub/AgileVentures/project_greeter_bot
└─┬ [email protected]
├── [email protected]
├─┬ [email protected]
│ └── [email protected]
├── [email protected]
├── [email protected]
├─┬ [email protected]
│ ├── [email protected]
│ ├─┬ [email protected]
│ │ └── [email protected]
│ ├─┬ [email protected]
│ │ └─┬ [email protected]
│ │ ├── [email protected]
│ │ └── [email protected]
│ ├── [email protected]
│ └── [email protected]
├── [email protected]
├── [email protected]
├─┬ [email protected]
│ ├─┬ [email protected]
│ │ ├── [email protected]
│ │ └─┬ [email protected]
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ └── [email protected]
│ ├── [email protected]
│ └── [email protected]
└─┬ [email protected]
└── [email protected]
и chai, так как я плохо помню синтаксис assert
:
[tansaku@Samuels-MBP:~/Documents/Github/AgileVentures/project_greeter_bot (5_add_tests)]$
→ npm install chai --save-dev
[email protected] /Users/tansaku/Documents/GitHub/AgileVentures/project_greeter_bot
└─┬ [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
└── [email protected]
Итак, я искал команду mocha init
, эквивалентную rspec --init
или bundle init
, и она есть, но, похоже, она создает каркас на стороне клиента с html и т. д., так что это не то, что нам нужно здесь. Похоже, здесь есть место для небольшой автоматизации… Я открыл предложение функций с Mocha, а тем временем обновил проекты package.json с помощью:
"scripts": {
"test": "mocha test/**/*.js"
},
и сбросил следующее в test/greeter_spec.js
[tansaku@Samuels-MBP:~/Documents/Github/AgileVentures/project_greeter_bot (5_add_tests)]$ → mkdir test [tansaku@Samuels-MBP:~/Documents/Github/AgileVentures/project_greeter_bot (5_add_tests)]$ → touch test/greeter_spec.js
require { expect } from 'chai';
describe('Project Greeter bot', function(){ it('should have greetings', function(){ expect(1).to.equal(1); }); });
и получил эту ошибку:
[tansaku@Samuels-MBP:~/Documents/Github/AgileVentures/project_greeter_bot (5_add_tests)]$ → npm test
> [email protected] test /Users/tansaku/Documents/GitHub/AgileVentures/project_greeter_bot > mocha test/**/*.js
/Users/tansaku/Documents/GitHub/AgileVentures/project_greeter_bot/test/greeter_spec.js:1 (function (exports, require, module, __filename, __dirname) { require { expect } from 'chai'; ^
SyntaxError: Unexpected token {
Я не помню часть синтаксиса со вчерашнего дня. В этом суть репутации — найти болевые точки, которых вы не нашли бы, если бы просто скопировали и вставили код. Могу ли я теперь решить это, не прибегая к поиску решения… Так заманчиво просто посмотреть на правильный синтаксис, но я заставлю себя медленно прочитать сообщение об ошибке, SyntaxError: Unexpected token {
, так что, может быть, просто попробуйте убрать фигурные скобки… нет, оба следующая ошибка:
require expect from 'chai';
require { 'expect' } from 'chai';
Ладно, посмотрю вчерашний код… ах, вот что должно быть:
var chai = require('chai');
var expect = chai.expect;
хм, я использовал смесь синтаксиса Python/React? :-) Хорошо, надеюсь, этот болевой момент поможет мне вспомнить — было бы здорово повторять каждый день, чтобы несколько человек закрепили его — теперь давайте посмотрим, смогу ли я снова подключить тест к реальному коду.
Немного потрудился — переместил весь js-код в директорию lib, переместил весь текст/переменные приветствия в файл greetings.js
, переименовал тестовые файлы, сделал множество констант, обновил package.json с "start": "node lib/server.js"
и попробовал следующее в конце файла greetings.js
, чтобы его можно было вставить как в test, так и в server.js
:
module.export = greetings;
что не получилось…
[tansaku@Samuels-MBP:~/Documents/Github/AgileVentures/project_greeter_bot (5_add_tests)]$ → npm test
> [email protected] test /Users/tansaku/Documents/GitHub/AgileVentures/project_greeter_bot > mocha test/**/*.js
module.js:471 throw err; ^
Error: Cannot find module 'greetings'
так что я не помню — попробовать какие-то альтернативы?
default module greetings;
export.module = greetings;
ни один из них не работает — я думаю, что снова добавляю синтаксис React — каково решение? Ах, я был ближе к началу, экспорт должен быть во множественном числе:
module.exports = greetings;
но все еще не работает — ах путь, необходимый в тесте с:
const chai = require('chai'); const expect = chai.expect;
const greetings = require('../lib/greetings');
describe('Project Greeter bot', function(){ it('should have greetings', function(){ expect(greetings.greeter).to.include('something'); }); });
Да это оно. Хорошо, нужно помнить о множественном числе в module.exports = ...
и о том, что это отличается от export default <function>
в React. Быстрое обновление тестов до чего-то более значимого, проверка того, что все в основном все еще работает, запуская сервер локально на старом экземпляре AV Mentors, и запрос на включение:
https://github.com/AgileVentures/project_greeter_bot/pull/23
и я начинаю думать обо всех остальных мелочах, чтобы превратить это в серьезный и доступный проект:
- использование режимов разработки/производства, чтобы избежать путаницы со слабыми идентификаторами
- последовательные инструкции по запуску проекта для новых разработчиков
- проверка этого развертывания в Azure
- настройка уведомлений GitHub на канале #bot-notify
- добавление проектов в начало работы AV и проекты …
Думаю, на другой день — обратно к точильному камню…
p.s. просто интересно, требует ли кодекс поведения, чтобы сопровождающие относились ко всем участникам с уважением, а участники относились друг к другу с уважением? вроде так и есть…
Первоначально опубликовано по адресу: http://nonprofits.agileventures.org/2017/09/06/av-ecosystem-review-athletic-reps/