使用 mocha 和 browserify 进行测试
Testing with mocha and browserify
我正在使用 ES6 编写项目并使用 bubel + browserify 编译我的 js 文件,到目前为止一切正常,
在我的 gulp 文件中,我添加了一个使用 mocha 的测试套件,如下所示:
gulp.task('buildTestsIndividually', function(done) {
gutil.log('buildTestsIndividually started');
glob('./test/**/*.spec.js', function(err, files) {
gutil.log('files'+files.length);
if(err) done(err);
var tasks = files.map(function(entry) {
return browserify({ entries: [entry] })
.transform(babelify)
.bundle()
.pipe(source(entry))
.pipe(rename({
extname: '.bundle.js'
}))
.pipe(gulp.dest(bundledTestsFolder));
});
es.merge(tasks).on('end', done);
});
gutil.log('buildTestsIndividually completed');
});
所以我想对我的一些代码进行单元测试,问题是我的项目正在使用一个名为 froala 的插件,而且 mocha 似乎无法加载该插件。
我不断收到此错误:
TypeError: this.$el.editable is not a function
at Array.map (native)
请注意,我的生产环境是如上所述的复制粘贴,插件在那里运行没有问题。
非常感谢任何帮助!!
好的,所以我发现了问题:
由于 gulp 运行 每个文件的任务都是分开的(及其所有依赖项),但所有的睾丸都 运行 在同一个浏览器实例上,副作用是 jQuery 被加载了多次,每次它都覆盖了之前的 jQuery 实例,因此某些测试中的插件被覆盖了。
解决方案(3个选项):
- 确保每个测试都有完全相同的插件扩展 jquery
- 首先收集所有依赖项(使用gulp)然后运行所有测试(可以结束)
- 运行 每个单独测试(需要找到一种方法用 gulp 自动完成)
希望对大家有所帮助,干杯!
我正在使用 ES6 编写项目并使用 bubel + browserify 编译我的 js 文件,到目前为止一切正常,
在我的 gulp 文件中,我添加了一个使用 mocha 的测试套件,如下所示:
gulp.task('buildTestsIndividually', function(done) {
gutil.log('buildTestsIndividually started');
glob('./test/**/*.spec.js', function(err, files) {
gutil.log('files'+files.length);
if(err) done(err);
var tasks = files.map(function(entry) {
return browserify({ entries: [entry] })
.transform(babelify)
.bundle()
.pipe(source(entry))
.pipe(rename({
extname: '.bundle.js'
}))
.pipe(gulp.dest(bundledTestsFolder));
});
es.merge(tasks).on('end', done);
});
gutil.log('buildTestsIndividually completed');
});
所以我想对我的一些代码进行单元测试,问题是我的项目正在使用一个名为 froala 的插件,而且 mocha 似乎无法加载该插件。
我不断收到此错误:
TypeError: this.$el.editable is not a function
at Array.map (native)
请注意,我的生产环境是如上所述的复制粘贴,插件在那里运行没有问题。
非常感谢任何帮助!!
好的,所以我发现了问题: 由于 gulp 运行 每个文件的任务都是分开的(及其所有依赖项),但所有的睾丸都 运行 在同一个浏览器实例上,副作用是 jQuery 被加载了多次,每次它都覆盖了之前的 jQuery 实例,因此某些测试中的插件被覆盖了。
解决方案(3个选项):
- 确保每个测试都有完全相同的插件扩展 jquery
- 首先收集所有依赖项(使用gulp)然后运行所有测试(可以结束)
- 运行 每个单独测试(需要找到一种方法用 gulp 自动完成)
希望对大家有所帮助,干杯!