2017-04-10 91 views
2

我想測試用命令行摩卡框架流星應用:找不到模塊「流星」

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

所有的測試工作正常,但當測試文件開頭:

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

進口流星等。我收到錯誤:

Error: Cannot find module 'meteor/meteor'

所以我的問題是:

  1. 如何在沒有命令「流星測試」的情況下測試流星應用?

  2. 我該如何引導摩卡來運行流星測試?

謝謝。

+0

你有流星安裝到本地NPM modules目錄('NPM install')?你也可能需要使用'meteor' CLI來運行測試。見[這裏](https://www.meteor.com/tutorials/blaze/testing)。 – usandfriends

+0

是的嘗試npm安裝和流星npm安裝,我需要運行測試沒有流星cli。 –

回答

0

您需要使用practicalmeteor: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'); 
     }); 

     } 
    }); 

+0

我需要測試沒有「流星測試」命令。 –