У меня проблемы с тестированием flatiron cli app с Mocha .
Командой командной строки, которую я хотел быtest создает каталог и регистрирует успех с app.log.info.
Это код для тестирования (./lib/commands/create.js):
var flatiron = require('flatiron'),
app = flatiron.app,
fs = require('fs'),
path = require('path');
module.exports = function create(name, callback) {
"use strict";
fs.mkdir('./' + name);
app.log.info('Directory created!');
}
Этотест (./test/create.js):
var create = require('../lib/commands/create');
describe('Flatiron command', function () {
"use strict";
describe('#create()', function () {
it('should create a directory ', function () {
create('someDirectory');
// check if the directory was created,
// then remove the directory
});
});
});
mocha test/log -R spec
дает мне
Flatiron command
#log()
1) should log something
✖ 1 of 1 tests failed:
1) Flatiron command #create() should create a directory :
TypeError: Cannot call method 'info' of undefined
Почему app.log
недоступно для Мокко?
Это из-за того, как экспортируется function log
?
Или это как-то связано с тем, как flatiron настраивает приложение?Я попытался потребовать flatiron.app и запустить его из теста, как этот
var create = require('../lib/commands/create'),
flatiron = require('flatiron'),
app = flatiron.app;
describe('Flatiron command', function () {
"use strict";
describe('#create()', function () {
it('should create a directory ', function () {
app.start();
create('someDirectory');
});
});
});
- но безуспешно, просто другая ошибка:
Flatiron command
#create()
1) should create a directory
✖ 1 of 1 tests failed:
1) Flatiron command #create() should create a directory :
TypeError: Object [object Object] has no method 'start'
Или это тот случай, когда выбудет использовать spies / stubs / mocks с чем-то вроде sinon.js , чтобы как-то имитировать поведение app.log?Потому что мне не очень интересно, работает ли логирование, но создан ли каталог.