0

カスタムパッケージを開発しています。それ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、テストが失敗します。

Meteor のバージョンは 1.2.0.2 です。
テスト ランナーは速度です。
テスト フレームワークは jasmine です。テストでES6の構文と機能を
使用しています。Mongo

どうすれば修正できますか?

4

1 に答える 1

1

でパッケージを使用しapi.use('other-package')ても、他のパッケージやアプリケーションで使用できないのと同じように、テスト コードで使用できるようにはなりPackage.onUseません。この問題を解決するには、必要に応じて次の 2 つの解決策があります。'other-package'use('my-package')meteor add my-packageother-package

  1. パッケージ (テストを含む) のユーザーがアクセスできるよう'other-package'にするapi.imply

    Package.onUse(function (api) {
      //...
      api.imply('other-package')
      //...
    })
    

    これは、パッケージが独自のパッケージを使用する必要implyがある場合にのみ意味があります。スコープの利便性のために、すべてを意地悪にしないでください。この質問の詳細を参照してください。 その部類に入らない場合は、imply

  2. useテストのパッケージだけ

    Package.onTest(function (api) {
      //...
      api.use('my-package')
      api.use('other-package')
      //...
    })
    

    other-packageこれにより、スコープを汚染することなく、テストでも使用できます。

于 2015-10-24T18:45:54.790 に答える