У меня проблемы с тестированием flatironcli app с Mocha.Тестирование приложения cli-приложения с моккой: app.log не определено?
Команда командной строки, которую я хочу протестировать, создает каталог и регистрирует успех с помощью 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.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'
Или это тот случай, когда вы будете использовать шпионов/stubs/mocks с чем-то вроде sinon.js, чтобы каким-то образом имитировать поведение app.log? Потому что мне неинтересно, работает ли журнал, но если каталог создан.
Метод #init() поступает из Бродвея. Вы должны инициализировать приложения Broadway, чтобы получить функции впрыска зависимостей. – srquinn