1 回答

TA貢獻1863條經驗 獲得超2個贊
我忽略了$this->myclassObject
在類級別進行定義的語法問題,因為我認為這是您創建此問題的錯字。
我認為您有兩個問題:
通過
null
在LoggerInterface的setMethods中進行指定,您將覆蓋PHPUnit模擬類/接口的抽象/接口方法的能力,該方法告訴它不要模擬任何東西你們都禁用富構造和(作為變量名的標值引號)提供的構造ARGS
您還引用了$logger
不存在的內容。
我還建議在您的示例中,您根本不需要部分模擬Foo,因為此時您尚未模擬其任何功能。您可以簡單地致電new Foo($this->logger)
。但是,我假設您的示例已精簡,并且您確實需要部分模擬該類的其他部分,因此現在將其保留。
試試這個:
class FooTest extends TestCase
{
private $logger;
private $myclassObject;
protected function setUp()
{
$this->logger = $this->createMock('\Psr\Log\LoggerInterface');
$this->logger->expects($this->any())
->method('debug')
->willReturn('Message Logged');
$this->myclassObject = $this->getMockBuilder('\MyVendor\MyModule\Model\Foo')
->setConstructorArgs([$this->logger])
->getMock();
}
public function testBar()
{
$this->assertEquals($expected_result, $this->myclassObject->Bar());
}
}
- 1 回答
- 0 關注
- 167 瀏覽
添加回答
舉報