我在測試flatironcli app與Mocha時遇到問題。使用Mocha測試flatiron 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'
或者這是你會使用間諜的情況下/存根/模擬類似於sinon.js來模擬app.log的行爲?因爲如果日誌記錄正常工作,我並不感興趣,但是如果創建目錄。
#init()方法來自百老匯。您必須初始化百老匯應用程序才能獲得依賴注入功能。 – srquinn 2013-04-20 20:12:43