我的类Foo有一个称为Bar的方法,该方法在调用时记录调试消息。Foo类的__contruct方法获取\ Psr \ Log \ LoggerInterface $ logger。我在我的FooTest类中创建了一个testBar方法,但是我的Bar方法中的debug方法却出现以下错误
PHP致命错误:类Mock_LoggerInterface_a49cf619包含8个抽象方法>因此必须声明为抽象方法或实现其余>方法(Psr \ Log \ LoggerInterface :: emergency,Psr \ Log> \ LoggerInterface :: alert,Psr \ Log \ LoggerInterface ::关键...)在/var/www/html/myproject/vendor/phpunit/phpunit-mock-objects>/src/Generator.php(264)中:第1行上的eval()代码
我的课程代码如下
use Psr\Log\LoggerInterface;
class Foo {
private $logger;
private $myclassObject;
public function __construct(LoggerInterface $logger)
{
$this->logger = $logger;
}
public function Bar ()
{
// some code
$logger->debug ('debug message')
}
}
我的测试课如下
use PHPUnit\Framework\TestCase;
class FooTest extends TestCase
{
private $logger;
public function setUp()
{
$this->logger = $this->getMockBuilder('\Psr\Log\LoggerInterface')
->setMethods(null)
->getMock();
$this->logger->expects($this->any())
->method('debug')
->willReturn('Message Logged');
}
$this->myclassObject = $this->getMockBuilder('MyVendor\MyModule\Model\Foo')
->setMethods(['__construct'])
->setConstructorArgs(['$logger'])
->disableOriginalConstructor()
->getMock();
public function testBar()
{
$this->assertEquals($expected_result,$this->myclassObject->Bar());
}
}
我期望看到调试消息记录为“ Message Logged”的存根调试成功的单元测试
小唯快跑啊