2017-12-12 15 views

답변

3

솔루션은 다음 node custom-karma.js

: 그냥 다음 실행을 실행하기 위해 맞춤 karma.js

const Server = require('karma').Server; 
const filesFromJson = require('./karma.files.json'); 
const glob = require("glob"); 
const cfg = require('karma/lib/config'); 
const _ = require("lodash"); 
const path = require("path"); 
const minConfig = require('./karma.min.js'); 
const EventEmitter = require('events'); 
class ChunkEmitter extends EventEmitter {} 
const chunkEmitter = new ChunkEmitter(); 

// register karma server and setup listener. 
const registerKarmaServerAndSetListeners = (config, chunkNumber) => { 
    const server = new Server(
     config, 
     () => { 
      console.log('test suite are done' + chunkNumber); 
      // when first chunk of tests is done we have to call another chunk 
      const nextChunk = ++chunkNumber; 
      console.log('proceeding ' + nextChunk); 
      chunkEmitter.emit('chunk' + nextChunk); 
     } 
    ); 
    // listening for server starting event and starting server. 
    chunkEmitter.on('chunk' + chunkNumber,()=> { 
     console.log('staring ' + chunkNumber); 
     server.start(); 
    }); 
} 
const readAllSpecsSplitIntoChunksEmitServer =() => { 
    glob("src/**/*spec.ts", {}, (er, files) => { 
     // spliting all specs into chunks. 
     const chunkedFiles = _.chunk(files, 50); 
     chunkedFiles.forEach((chunk, index) => { 
      let chunkedFiles = filesFromJson.coreFiles.concat(chunk); 
      let karmaConfig = cfg.parseConfig(path.resolve('./karma.config.js'), { 
       files: chunkedFiles 
      }); 
      registerKarmaServerAndSetListeners(karmaConfig, index); 
     }); 
     // starting tests from chunk0 
     chunkEmitter.emit('chunk0'); 
    }) 
} 

readAllSpecsSplitIntoChunksEmitServer();