phpDocx = $this->getMockBuilder(CreateDocx::class)->disableOriginalConstructor()->getMock(); $this->fileUtils = $this->getMockBuilder(FileUtils::class)->disableOriginalConstructor()->getMock(); } public function testSupport(): void { $encoder = $this->getMockBuilder(DocXEncoder::class) ->setConstructorArgs([$this->phpDocx, $this->fileUtils]) ->setMethodsExcept(['support']) ->getMock(); $this->assertTrue($encoder->support('docx')); $this->assertFalse($encoder->support('txt')); } public function testEncode(): void { $encoder = $this->getMockBuilder(DocXEncoder::class) ->setConstructorArgs([$this->phpDocx, $this->fileUtils]) ->setMethodsExcept(['encode']) ->getMock(); $this->fileUtils ->expects(self::once()) ->method('getTempFilename') ->with('docx') ->willReturn('tmp/temp.docx'); $this->phpDocx ->expects($this->once()) ->method('embedHtml') ->with('
content
'); $this->phpDocx ->expects(self::once()) ->method('createDocx') ->with('tmp/temp.docx'); $this->fileUtils ->expects(self::once()) ->method('getFileContent') ->with('tmp/temp.docx') ->willReturn('%%encoded%%'); $this->fileUtils ->expects(self::once()) ->method('rmIfExist') ->with('tmp/temp.docx'); $this->assertEquals( '%%encoded%%', $encoder->encode('
content
') ); } public function testEncodeWithError(): void { $encoder = $this->getMockBuilder(DocXEncoder::class) ->setConstructorArgs([$this->phpDocx, $this->fileUtils]) ->setMethodsExcept(['encode']) ->getMock(); $this->fileUtils ->method('getTempFilename') ->with('docx') ->willReturn('tmp/temp.docx'); $this->phpDocx ->method('embedHtml') ->with('
content
'); $this->phpDocx ->method('createDocx') ->with('tmp/temp.docx'); $this->fileUtils ->method('getFileContent') ->willThrowException(new \Exception('error')); $this->fileUtils ->expects(self::once()) ->method('rmIfExist') ->with('tmp/temp.docx'); $this->expectException(\Exception::class); $this->expectExceptionMessage('error'); $encoder->encode('
content
'); } }