placeholderMock = $this->getMockBuilder(PlaceholderInterface::class) ->disableOriginalConstructor() ->getMockForAbstractClass(); $this->fileSystemMock = $this->getMockBuilder(Filesystem::class) ->disableOriginalConstructor() ->getMock(); $this->model = new Comment( $this->fileSystemMock, $this->placeholderMock ); } public function testExecute() { $fileName = 'config.local.php'; $directoryReadMock = $this->getMockBuilder(ReadInterface::class) ->disableOriginalConstructor() ->getMockForAbstractClass(); $directoryReadMock->expects($this->once()) ->method('readFile') ->with($fileName) ->willReturn(file_get_contents(__DIR__ . '/../_files/' . $fileName)); $this->fileSystemMock->expects($this->once()) ->method('getDirectoryRead') ->with(DirectoryList::CONFIG) ->willReturn($directoryReadMock); $this->placeholderMock->expects($this->any()) ->method('restore') ->withConsecutive( ['CONFIG__DEFAULT__SOME__PAYMENT__PASSWORD'], ['CONFIG__DEFAULT__SOME__PAYMENT__TOKEN'] ) ->willReturnOnConsecutiveCalls( 'some/payment/password', 'some/payment/token' ); $this->assertEquals( $this->model->execute($fileName), [ 'CONFIG__DEFAULT__SOME__PAYMENT__PASSWORD' => 'some/payment/password', 'CONFIG__DEFAULT__SOME__PAYMENT__TOKEN' => 'some/payment/token' ] ); } }