我终于乘坐ES6列车了。我用ES6和Babel编写了一个小的Node.js应用程序进行编译。我正在使用Mocha编写测试,据我所知,你不应该使用ES6。
我正在尝试测试我所创建的对象类的一些函数。所以在摩卡我正在做以下事情:
var assert = require('assert');
var Icon = require('../lib/icon');
describe('Icons', function() {
describe('#save()', function() {
it('should return a success message & save the icon', function() {
var icon = new Icon('https://cdn4.iconfinder.com/data/icons/social-media-2070/140/_whatsapp-128.png', 'icon-test');
var result = Icon.save();
if(result !== '_whatsapp-128.png saved successfully.') return false;
return fs.existsSync('icon-test/_whatsapp-128.png');
});
});
});
由于这条线明显无效:
var icon = new Icon('https://cdn4.iconfinder.com/data/icons/social-media-2070/140/_whatsapp-128.png', 'icon-test');
我不太确定如何使用ES5实例化ES6对象然后测试该函数。任何帮助将不胜感激。
**编辑 - 添加图标文件**
import fs from 'fs';
import https from 'https';
import path from 'path';
class Icon {
constructor(source, destination) {
this.source = source;
this.destination = path.resolve(destination);
}
save() {
console.log(this.source);
// Fetching the icon.
let request = https.get(this.source, (response) => {
// Splitting the file information.
let fileInfo = path.parse(this.source);
// Creating the directory, if it does not already exist.
if(!fs.existsSync(this.destination)) {
fs.mkdirSync(this.destination);
console.log('Destination directory created.\n');
}
// Piping the icon data & saving onto disk.
let iconFile = fs.createWriteStream(this.destination + '/' + fileInfo.base);
response.pipe(iconFile);
return `${fileInfo.base} saved successfully.`;
});
}
}
export default Icon;
答案 0 :(得分:1)
../lib/icon
是具有默认导出的ES6模块。
require('../lib/icon')
返回ES6模块对象。要求默认导出,它应该是
var Icon = require('../lib/icon').default;
答案 1 :(得分:-1)
使用es6-shim或es5-shim(请参阅此处https://github.com/paulmillr/es6-shim)以使其在ECMA Script 5中运行。如果不能使用它,请包含其他库以获得遗留支持,如您所见这里https://github.com/es-shims用于填充和其他所有东西。
希望有所帮助。