我正在开发一个自定义包。它的package.js
是:
Package.describe({
name: 'adigiovanni:one-way-accounts',
version: '0.0.1',
summary: 'One Way Accounts',
git: '',
documentation: 'README.md',
});
Package.onUse(function (api) {
api.versionsFrom('1.2.0.2');
api.use('ecmascript');
api.use('mongo');
// api.imply('mongo');
api.addFiles([
'lib/collections/Accounts.js',
'lib/methods.js',
'lib/OneWayAccounts.js',
]);
api.export('OneWayAccounts');
});
Package.onTest(function (api) {
api.use([
'ecmascript',
'sanjo:jasmine@0.20.2',
'velocity:html-reporter',
]);
api.use('adigiovanni:one-way-accounts');
api.addFiles('tests/client/OneWayAccounts.js', 'client');
api.addFiles('tests/server/OneWayAccounts.js', 'server');
});
如您所见,包使用'mongo'
。
测试失败:
参考错误:没有定义Mongo
但如果我取消注释行api.imply('mongo')
,那么测试就会成功。
相同的奇怪行为适用于ecmascript
依赖关系,如果我api.use('ecmascript')
Package.onTest
Mongo
,则测试失败。
Meteor版本是1.2.0.2
试验跑步者是速度
测试框架是茉莉
我在测试中使用map
和ES6语法和功能。
发生了什么,我该如何解决?
答案 0 :(得分:1)
在Package.onUse
中使用api.use('other-package')
的程序包不会使您的测试代码中的'other-package'
可用,因为它不会使use('my-package')
的其他程序包可用}或在meteor add my-package
的应用程序中。要解决此问题,根据other-package
:
允许该软件包的用户(包括您的测试)使用api.imply
访问'other-package'
Package.onUse(function (api) {
//...
api.imply('other-package')
//...
})
这是有道理的,当且仅当您imply
需要使用自己的软件包时。为方便起见,请不要imply
一切都是不可能的。查看更多in this question
如果不属于该类别,
只需use
测试中的包
Package.onTest(function (api) {
//...
api.use('my-package')
api.use('other-package')
//...
})
这样您就可以在测试中使用other-package
,而不会污染范围。