【发布时间】:2012-03-17 13:15:16
【问题描述】:
我在测试 flatiron cli app 和 Mocha 时遇到问题。
我想测试的命令行命令创建一个目录并使用 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不适用于 Mocha?
这是因为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'
或者在这种情况下,您会使用带有sinon.js 之类的东西的间谍/存根/模拟来以某种方式模拟 app.log 的行为?因为我不关心日志记录是否有效,但是否创建了目录。
【问题讨论】:
标签: javascript testing bdd mocha.js flatiron.js