私のアプリケーションの単体テストを書こうとしています。これは情報の機能をログとして記録します。私はたLogInfoと呼ばれるサービス、私はデータを処理する別のクラスを持っているZF2 phpunit Zend Logger
use Zend\Log\Logger;
class LogInfo {
$logger = new Logger;
return $logger;
}
のように、この方法を私のクラスの外観を持っていると
を開始します。これは以下の通りです。ここclass Processor
{
public $log;
public function processData($file)
{
$this->log = $this->getLoggerObj('data');
$this->log->info("Received File");
}
public function getLoggerObj($logType)
{
return $this->getServiceLocator()->get('Processor\Service\LogInfo')->logger($logType);
}
}
私はLOGINFOサービスを呼び出し、それを使用して、ファイル内の情報を書いています。私はそれを実行しよう
今私はクラスプロセッサ
以下用のPHPUnitを作成する必要がありますが
class ProcessorTest{
public function setUp() {
$mockLog = $this->getMockBuilder('FileProcessor\Service\LogInfo', array('logger'))->disableOriginalConstructor()->getMock();
$mockLogger = $this->getMockBuilder('Zend\Log\Logger', array('info'))->disableOriginalConstructor()->getMock();
$serviceManager = new ServiceManager();
$serviceManager->setService('FileProcessor\Service\LogInfo', $mockLog);
$serviceManager->setService('Zend\Log\Logger', $mockLogger);
$this->fileProcessor = new Processor();
$this->fileProcessor->setServiceLocator($serviceManager);
}
public function testProcess() {
$data = 'I have data here';
$this->fileProcessor->processData($data);
}
}
私のユニットテストケースで、私は「エラーを取得しています..... .PHP致命的なエラー: "
私はZend loggerをどうやって模擬してクラスに渡すことができますか?
'getLoggerObj'関数の' get( 'Processor \ Service \ LogInfo')の呼び出しがテストケース中にあなたに戻ってきているかどうか調べてみましたか? – Fge