【发布时间】:2013-08-26 07:01:16
【问题描述】:
我正在使用 PHPUnit 进行测试,但我的测试在某个函数上失败了。但我不知道为什么。 我要模拟的功能:
public function subscribe($email)
{
$message = new SubscribeMessage();
$message->setEmailaddress($email);
$message->setLocale(Locale::getDefault());
$this->getAmqpProducer()->publish($message, 'newsletter-subscribe');
return true;
}
还有我的单元测试:
public function testSubscribeSendsAmqpMessage()
{
$email = 'email@email.nl';
$locale = 'nl';
$this->amqpProducerMock
->shouldReceive('publish')
->once()
->with(
\Mockery::on(
function ($message, $routingkey) use (&$publishedMessage) {
$publishedMessage = $message;
return $routingkey == 'newsletter-subscribe';
}
)
);
$this->service->subscribe($email, $locale);
}
但测试显示:
Mockery\Exception\NoMatchingExpectationException : No matching handler found for AcsiRabbitMq\Producer\Producer::publish(AcsiNewsletter\RabbitMq\Message\SubscribeMessage, "newsletter-subscribe"). Either the method was unexpected or its arguments matched no expected argument list for this method
如何修复我的单元测试?或者我该如何重构我的测试?
【问题讨论】:
-
这对您解决问题有帮助吗?只是检查一下,以便您可以接受答案以帮助他人,或者如果您需要任何其他信息,我可以调整我的答案。
标签: unit-testing mocking phpunit mockery