2013-08-31 43 views
0

我們有一個複雜的多服務,需要在關閉時執行一些相當複雜的會計以實現「優雅」關閉。twisted:測試我的服務的停止序列

我正在試着爲此編寫測試。問題在於反應堆實際上是過程全球資源,關閉我的服務意味着試驗反應堆也停止運行,當然這會導致反應堆爆炸。

這是documented to be a no-no in trial,但我需要某種解決方法,允許我寫我的測試。我的第一個想法是使用mock.Mock,但這意味着我們並沒有真正使用關閉的反應堆,這不會給我的行爲忠實於實際的關閉過程。

我相信我需要的是一種將試驗反應堆與被測服務反應堆分開的方法。在測試系統和被測系統之間共享可變資源肯定是一種反模式。

回答

2

關閉服務和停止反應堆是有區別的。您應該能夠用myservice.stopService測試大部分所需的行爲。要測試實際啓動關機的代碼,只需用self.patch(reactor, 'stop', mock.Mock())剔除reactor.stop,稍後再聲稱它已被調用。如果你想鏈接這兩個,那麼你的模擬stop打電話給你的服務stopService