Php 使用Simpletest进行单元测试的问题

Php 使用Simpletest进行单元测试的问题,php,simpletest,unit-testing,Php,Simpletest,Unit Testing,我使用PHP和simpletest进行单元测试。在我尝试设置cookie之前,我的测试工作正常 try{ setcookie($name,$cookie,$cookie_expires ); }catch Exception($e){ blah } 引发异常是因为simpletest已经写出了头信息,因此我得到以下信息: 意外的PHP错误[无法修改标题信息-标题已由[blah_code.PHP第280行]中的[E_WARNING]严重性[E_WARNING]发送(输出开始于/tes

我使用PHP和
simpletest
进行单元测试。在我尝试设置cookie之前,我的测试工作正常

try{
    setcookie($name,$cookie,$cookie_expires );
}catch Exception($e){
  blah
}
引发异常是因为
simpletest
已经写出了头信息,因此我得到以下信息:

意外的PHP错误[无法修改标题信息-标题已由[blah_code.PHP第280行]中的[E_WARNING]严重性[E_WARNING]发送(输出开始于/tests/simpletest/reporter.PHP:43)]


我已经看到了关于用
$this->expectException(new Exception())捕获这个的模糊解释但没有进一步的文档或示例。有人能提供一个工作示例或给我指一下文档吗?说清楚。这不是我生成输出的代码,而是简单的测试。

如果在(函数)
setcookie($name,$cookie,$cookie\u expires)之前有输出,则会出现此错误


确保在
之前没有任何
回音
html
文本
或任何(甚至没有空格)一种解决方法是使用输出缓冲

您可以在PHP的配置中全局打开它(也可能在.htaccess中),或者可以使用它及其相关函数(
ob\u get\u clean()
ob\u end\u flush()
,等等)。例如:

ob_start();
// your SimpleTest here.
// your header/ cookie manipulation here.
然后:

ob_end_clean(); // Stop buffering and dump everything (don't echo).
ob_end_flush(); // Stop buffering and echo out the buffer.
ob_get_clean(); // Stop buffering and return everything as a string.

或任何其他相关功能。我相信PHP会在文件末尾调用
ob_flush()
,如果您不这样做的话。

这是一个简单的测试,它创建的是输出,而不是我的代码。这就是我在这里提出这个问题的原因。@Jim我很抱歉我严重误解了你的问题。@Jim我想你在输出任何东西之前使用了这个
simpletest
。这里有类似的问题。。。仅在文件的最开头添加ob_start()不会改变任何内容。