我正在实现一个模块,它将提供一个API来处理和管理PHP会话.我正在测试Session\Manager允许用户启动会话,设置ID,获取ID,销毁会话等的实现.我正在使用PHPUnit的@runInSeparateProcess注释在单独的过程中测试此类中的方法.当我使用这个注释时,由于反序列化错误,我得到PHPUnit抛出的异常.当我不使用注释时,测试按预期运行,并且在null不等于false时失败.
这是导致错误的测试.到目前为止还没有实现详细信息,接口的所有方法都存在但不执行任何操作.
class ManagerTest extends PHPUnitTestCase {
/**
* Ensures that if the session has not been started yet the sessionExists
* method returns false.
*
* @runInSeparateProcess
*/
public function testSessionExistsWhenSessionHasNotBeenStarted() {
$Manager = new \Session\Manager();
$this->assertFalse($Manager->sessionExists());
}
}
Run Code Online (Sandbox Code Playgroud)
我能够将问题追溯到以下PHPUnit_Util_PHP::runJob()方法.我正在运行PHPUnit 3.7.5并且runJob被调用的方法是:
/**
* Runs a single job (PHP code) using a separate PHP process.
*
* @param string $job
* @param PHPUnit_Framework_TestCase $test
* @param PHPUnit_Framework_TestResult $result
* @return array|null
* …Run Code Online (Sandbox Code Playgroud)