Ответ 1
Существует множество способов разбить файлы на более мелкие, более управляемые части. Большинство из них поворачиваются вокруг использования флага --recursive
в mocha
. В конце концов, это вопрос личного выбора и того, что работает для команды/человека.
Вариант 1: Пространство имен через точечную нотацию
Запустите mocha
без флага --recursive
и назовите свои файлы с помощью точечной нотации. Затем вы можете разбить его по HTTP-методу и даже дальше, если хотите, с помощью pass/fail. Например, маршрут пользователя будет иметь имя файла, например route.user.get.pass.js
, и находиться в корневом каталоге test/
. Код для этого файла будет выглядеть так:
describe('GET /users', function () {
describe('when the request is valid', function () {
it('should return 200 OK');
it('should have unicorns');
it('should have ponies too');
});
});
И тогда другой тест с именем файла route.resource.post.fail.js
будет выглядеть так:
describe('POST /users', function () {
describe('when the request is invalid', function () {
it('should return 400 Bad Request');
...
});
});
Это означает, что люди grepping испытывают легкий ветер при использовании mocha
функции grep
Вариант 2: размещение имен через папки
Как и в случае с вариантом 1, в этом случае вы используете флаг --recursive
при запуске mocha
и используете папки вместо вложенных имен файлов.
test/
routes/
users/
post.js
get.js
put.js
models/
User.js
Вариант 3: Разделить с помощью модулей
Этот подход представляет собой комбинацию первых двух и должен выполняться без флага --recursive
. В корневом каталоге test
вы должны указать спецификационный файл как routes.userSpec.js
с кодом типа:
describe('/users', function () {
describe('GET', function () {
var tests = require('./users/get');
it('should return 200 OK', tests.200);
it('should have unicorns', tests.unicorns);
it('should have ponies too', tests.ponies);
});
describe('POST', function () {
var tests = require('./users/post');
it('should return 200 OK', tests.200);
it('should create unicorns', tests.unicorns);
it('should create ponies too', tests.ponies);
});
});
И тогда вы определяете модули в папке test/users
, которые выглядят примерно так:
test/
users/
get.js
post.js
routes.userSpec.js
Вариант 4: сгибание кода
Иногда большие файлы неизбежны, и поэтому все хорошие текстовые редакторы имеют функцию сворачивания кода.