【问题标题】:How to unit test PCNTL forker class in PHP?如何在 PHP 中对 PCNTL forker 类进行单元测试?
【发布时间】:2011-03-16 22:18:28
【问题描述】:

我有一个抽象的 PHP 类,它负责执行进程分叉,并将当前进程从终端分离并继续作为守护进程。

我真的很想获得有关如何对此类 (PHPUnit) 进行单元测试的提示。假设基于这个抽象在测试中实现一个最小的套接字服务器并与之通信?有更好的想法吗?

课程可以在这里看到:https://github.com/tcz/PHPTracker/blob/master/lib/PHPTracker/Threading/Forker.php

谢谢!

【问题讨论】:

    标签: php unit-testing fork process-control


    【解决方案1】:

    正如 gphilip 所说,您可以使用 runkit 来模拟 pcntl_fork() 并测试所有代码分支。这是一个例子:http://kpayne.me/2012/01/17/how-to-unit-test-fork/

    【讨论】:

      【解决方案2】:

      这里有两点需要测试:

      1. 如果分叉有效
      2. 其余代码

      可以通过将分叉进程的 ID 保存在某处并查看它是否仍在运行来测试分叉是否有效,并且可以在不分叉的情况下照常测试该类的其余部分。

      【讨论】:

      • 实际上那将是功能测试,而不是真正的单元测试,但我已经找到了解决方案。使用runkit,您可以“模拟”原生 PHP 函数。
      猜你喜欢
      • 2016-10-21
      • 2011-09-17
      • 2015-09-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-19
      • 2014-10-08
      • 2011-03-24
      相关资源
      最近更新 更多