【问题标题】:cannot find module 'meteor'找不到模块“流星”
【发布时间】:2017-09-05 21:58:39
【问题描述】:

我想从命令行使用 mocha 框架测试一个流星应用程序:

mocha **/*/*spec.js --compilers js:babel-core/register

所有测试都可以正常工作,但是当测试文件以 :

开头时
import { Meteor } from 'meteor/meteor';
import { Factory } from 'meteor/dburles:factory';

导入流星等..我收到错误:

错误:找不到模块“流星/流星”

所以我的问题是:

  1. 如何在没有命令“meteor test”的情况下测试流星应用程序?

  2. 我必须如何引导 mocha 来运行流星测试?

谢谢。

【问题讨论】:

  • 你是否将meteor安装到本地NPM模块目录(npm install)?此外,您可能需要使用 meteor CLI 运行测试。见here
  • 是的,尝试了 npm install 和 meteor npm install,我需要在没有流星 cli 的情况下运行测试。

标签: javascript node.js meteor mocha.js


【解决方案1】:

你需要使用practicemeteor:mocha。所以我的 package.json 中有如下脚本:

"scripts": {
    "start": "meteor --settings settings-development.json",
    "test": "meteor test --driver-package practicalmeteor:mocha --port 5000 --settings settings-development.json",
    "chimp-watch": "chimp --ddp=http://localhost:3000 --watch --mocha --path=tests",
    "chimp-test": "chimp --ddp=http://localhost:3000 --mocha --path=tests"
  },

这些是一些简单的测试:



    /* eslint-env mocha */
    /* eslint-disable func-names, prefer-arrow-callback */
    /* eslint no-console: ["error", { allow: ["log", "warn", "error"] }] */

    import { Meteor } from 'meteor/meteor';
    import { assert } from 'meteor/practicalmeteor:chai';
    import { resetDatabase } from 'meteor/xolvio:cleaner';

    import { checkLog } from '../apiHelpers.js';

    import { insertLog } from './methods.js';
    import { addLog, addLogPromise } from './insertHelpers.js';
    import { getLGSitemId, getLGSitemType, getLGScreateDate } from './generalHelpers.js';
    import { getLDSevents, getLDSevent, addEvent } from './dataHelpers.js';

    describe('Log Tests', function() {
      beforeEach(function () {
        if (Meteor.isServer) {
          resetDatabase();
        }
      });

      if (Meteor.isServer) {

        it('insertHelpers: addLog', function () {
          let testLogId = '';

          try {
            testLogId = insertLog.call(addLog('someDodgyId', 'doc'));
          } catch (err) {
            console.log(err);
          }

          assert.typeOf(testLogId, 'string');
          assert.typeOf(checkLog(testLogId), 'undefined'); // if it runs correctly, undefined
        });

        it('insertHelpers: addLogPromise', function () {
          addLogPromise('someDodgyId', 'doc')
            .then((result) => {
              assert.typeOf(result, 'string');
              assert.typeOf(checkLog(result), 'undefined');
            })
            .catch((err) => {
              throw new Meteor.Error(err);
            });
        });

        it('generalHelpers', function() {
          const testLogId = insertLog.call(addLog('someDodgyId', 'doc'));
          assert.typeOf(testLogId, 'string');

          // Tests
          assert.equal(getLGSitemId(testLogId), 'someDodgyId');
          assert.equal(getLGSitemType(testLogId), 'doc');
          assert.typeOf(getLGScreateDate(testLogId), 'date');
        });

      }
    });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-30
    • 1970-01-01
    • 2017-03-31
    • 1970-01-01
    • 2016-10-20
    • 2018-03-26
    • 2016-12-23
    • 1970-01-01
    相关资源
    最近更新 更多