2015-04-22 77 views
2

我正在創建一個框架來在特定的時間執行進程(類似cron)並測試它我正在使用chai-mocha-grunt。如何使用chai和mocha測試子進程?

解決方案的體系結構基於this example。基本上,我們有:

  • 一個主進程,它調用Child(通過child_process.fork)特定的次數。
  • 一個子進程,它使用setInverval()來執行某些事情;
  • 調用Master.start()函數的過程。

有了這個架構,我該如何測試以確保線程在正確的時間使用mocha和chai(與'assert'庫)執行?

換句話說,我該如何讓chai'聽'線程並檢查它們是否在正確的時間執行?

回答

1

我不確定你需要chai本身來聽你的線程。如果你是建立在你關聯的例子之上的話,那麼它應該是非常簡單的,因爲Master.js已經是一個EventEmitter了,它已經發出了它從子進程中聽到的所有事件。

你的測試結構可能是如此簡單:

describe('ForkExample test', function() { 
    // Set an appropriate test timeout here 
    this.timeout(1000); 

    it('should do stuff at the right time', function(done) { 
     var fe = new ForkExample(); 
     fe.start(1); 
     fe.on('event', function(type, pid, e) { 
      if (type === 'child message') { 
       // Check here that the timing was within some expected range 
       done(); 
      } 
     }); 
    }); 
}); 
+0

謝謝!我會測試它。 –

+0

它的工作原理!非常感謝! –

相關問題