我有以下配置:
我在Windows XP上从命令行和Netbeans运行我的测试。 这是我的代码。
class Wrapper
{
public function wrap($text, $maxLength) {
if(strlen($text) > $maxLength)
return substr($text, 0, $maxLength) . "\n" . substr($text, $maxLength);
return $text;
}
}
class WrapperTest extends PHPUnit_Framework_TestCase
{
protected $wrapper;
protected function setUp() {
$this->wrapper = new Wrapper;
}
public function testWrap() {
$text = '';
$this->assertEquals($text, $this->wrapper->wrap($text));
}
}
问题是虽然该函数明显缺少参数,但测试仍然通过。使用Ubuntu时,测试按预期失败。
答案 0 :(得分:1)
这是一种可捕获的错误类型。为了捕获错误,您可以创建自定义错误处理程序。见(http://php.net/manual/en/function.set-error-handler.php)。
为了抓住这个。您可以尝试以下方法。
class Wrapper
{
public function wrap($text, $maxLength) {
if(strlen($text) > $maxLength)
return substr($text, 0, $maxLength) . "\n" . substr($text, $maxLength);
return $text;
}
}
class WrapperTest extends PHPUnit_Framework_TestCase
{
protected $wrapper;
protected function setUp()
{
set_error_handler(array($this, 'errorHandler'));
}
public function errorHandler($errno, $errstr, $errfile, $errline)
{
throw new \InvalidArgumentException(
sprintf(
'Missing argument. %s %s %s %s',
$errno,
$errstr,
$errfile,
$errline
)
);
}
public function testShouldThrowExceptionWhenTheresNoParamPassed()
{
$this->setExpectedException('\InvalidArgumentException');
new Wrapper;
}
}
希望有所帮助。