我有一個抽象的PHP類,負責做進程分叉,並從終端分離當前進程並繼續作爲deamon。如何在PHP中對PCNTL forker類進行單元測試?
我真的很想知道如何單元測試這個類(PHPUnit)。比方說,根據這個摘要在測試中實現一個最小套接字服務器並與之通信?任何更好的想法?
類可以在這裏看到:https://github.com/tcz/PHPTracker/blob/master/lib/PHPTracker/Threading/Forker.php
謝謝!
我有一個抽象的PHP類,負責做進程分叉,並從終端分離當前進程並繼續作爲deamon。如何在PHP中對PCNTL forker類進行單元測試?
我真的很想知道如何單元測試這個類(PHPUnit)。比方說,根據這個摘要在測試中實現一個最小套接字服務器並與之通信?任何更好的想法?
類可以在這裏看到:https://github.com/tcz/PHPTracker/blob/master/lib/PHPTracker/Threading/Forker.php
謝謝!
有跡象表明,這裏需要測試的兩件事情:
測試的其餘部分,如果叉的工作可以通過保存的ID來完成看看它是否還在運行,而其餘的課程可以照常進行測試而不需要分叉。
正如gphilip所說,你可以使用runkit來模擬pcntl_fork()並測試代碼的所有分支。下面是一個例子:http://kpayne.me/2012/01/17/how-to-unit-test-fork/
實際上,這將是功能測試,不是真正的單元測試,但我找到了解決方案。使用[runkit](http://es.php.net/manual/es/book.runkit.php),您可以「模擬」原生PHP功能。 – gphilip 2011-05-11 16:52:36