1
我有一個測試失敗,而在預言PHPUnit的比較一些接口和嘲笑resutls:預言,嘲笑在PHP單元測試比較,以及預期
<?php
namespace AppBundle\Test\Service\Message;
use AppBundle\Service\Message\RabbitMqMessageProducerProvider;
use OldSound\RabbitMqBundle\RabbitMq\ProducerInterface;
use PHPUnit_Framework_TestCase;
use Prophecy\Prophecy\ObjectProphecy;
/**
* Class RabbitMqMessageProducerProviderTest
* @package AppBundle\Test\Service\Message
*/
class RabbitMqMessageProducerProviderTest extends PHPUnit_Framework_TestCase
{
public function testProvide()
{
/** @var ProducerInterface|ObjectProphecy $lowProducer */
$lowProducer = self::prophesize(ProducerInterface::class);
/** @var ProducerInterface|ObjectProphecy $mediumProducer */
$mediumProducer = self::prophesize(ProducerInterface::class);
/** @var ProducerInterface|ObjectProphecy $highProducer */
$highProducer = self::prophesize(ProducerInterface::class);
$provider = new RabbitMqMessageProducerProvider(
$lowProducer->reveal(),
$mediumProducer->reveal(),
$highProducer->reveal()
);
self::assertSame($lowProducer, $provider->provide(1));
self::assertSame($mediumProducer, $provider->provide(11));
self::assertSame($highProducer, $provider->provide(101));
}
}
這些都是resutls:
Failed asserting that two variables reference the same object.
任何幫助將不勝感激。謝謝。
下一塊代碼是我正在測試的代碼。
<?php
namespace AppBundle\Service\Message;
use OldSound\RabbitMqBundle\RabbitMq\ProducerInterface;
/**
* Class RabbitMqMessageProducerProvider
* @package AppBundle\Service\Message
*/
class RabbitMqMessageProducerProvider
{
/**
* @var ProducerInterface
*/
private $lowPriorityProducer;
/**
* @var ProducerInterface
*/
private $mediumPriorityProducer;
/**
* @var ProducerInterface
*/
private $highPriorityProducer;
/**
* RabbitMqMessageProducerProvider constructor.
*
* @param ProducerInterface $lowPriorityProducer
* @param ProducerInterface $mediumPriorityProducer
* @param ProducerInterface $highPriorityProducer
*/
public function __construct(
ProducerInterface $lowPriorityProducer,
ProducerInterface $mediumPriorityProducer,
ProducerInterface $highPriorityProducer
)
{
$this->lowPriorityProducer = $lowPriorityProducer;
$this->mediumPriorityProducer = $mediumPriorityProducer;
$this->highPriorityProducer = $highPriorityProducer;
}
/**
* @param int $priority
* @return ProducerInterface
*/
public function provide(int $priority)
{
$priorityRange = log10($priority);
if ($priorityRange < 2) {
return $this->lowPriorityProducer;
}
if ($priorityRange < 3) {
return $this->mediumPriorityProducer;
}
return $this->highPriorityProducer;
}
}
可以顯示類的被測的源代碼? – Matteo
當然,我要將代碼添加到問題主體@Matteo – zioMitch
log10(11)= 1.0413926851582因此第二個斷言正確失敗。嘗試添加一條消息作爲第二個第三個參數,以查看哪些測試失敗。 – Matteo