2017-03-02 82 views
1

好的,所以我正在看一个代码,我正在做一个phpunit覆盖测试。在该测试,我只得到2行未适当地工作:我getEarliestDateorNull内PHPUnit覆盖测试elseif错误

private function getEarliestDateOrNull($snapshotDate = null, $preexistingEpisodeDate = null) 
{ 
    $date = null; 

    if ($snapshotDate instanceof DateTime && $preexistingEpisodeDate instanceof DateTime) { 
     $date = $snapshotDate < $preexistingEpisodeDate ? $snapshotDate : $preexistingEpisodeDate; 
    } elseif ($snapshotDate instanceof DateTime) { 
     $date = $snapshotDate; 
    } elseif ($preexistingEpisodeDate instanceof DateTime) { 
     $date = $preexistingEpisodeDate; 
    } 

    return ($date instanceof DateTime) ? $date->format('m/d/Y') : null; 
} 

的问题是,这两个ELSEIF语句是测试出于某种原因不能读取唯一的。有没有办法从elseif语句中改变它们?我的意思是说,如果可能有SWITCH的实施。该测试在PHP 7

+0

你说你有没有适当工作两行,但你贴103线... –

+0

@JoeC好的,我修改了它。我非常感激知道错误是什么。我如何实现两个elseif语句的替代方案? – OZTZ3

+0

我也遇到了这个问题elseif被PHPUnit 5.6.2 –

回答

0

运行得试错后,如果您将其设置为else ifelseif它应该工作:)

+0

覆盖是的,我试过切换它,它的工作! 虽然我不知道为什么它不承认它?如果我从php 7切换到PHP 5.6,它应该可以在两个版本上运行,对吧? – OZTZ3

+0

嘿安迪!我有一个后续问题,当我运行代码时...因为它进入if语句,它应该只读取第一个if和忽略第二个else if,否则读取第二个else if和忽略第一个if第二如果,对吧?在代码覆盖测试中,它读取所有3条语句。你知道为了挑选3个陈述中的一个可以实施什么吗?谢谢! – OZTZ3