2015-09-09 31 views
1

我已經在laravel中編寫了一個REST應用程序。它接受Json有效載荷並使用此數據創建格式化的pdf。測試pdf的軟件是否正確創建

是否可以編寫一個測試,檢查PDF已經正確生成?

編輯:

理想我想知道的PDF沒有被破壞,即。將在PDF閱讀器中打開。

而且這將是很好的莫名其妙檢查PDF的內容。例如...它是否包含客戶名稱?

謝謝。

+0

你能在代碼中「正確」定義嗎? –

+1

您是否期待是或否的答覆? bcoz多數民衆贊成最多什麼人可以提供您與您的問題發佈 – spiderman

+0

驗證PDF是相當複雜的,所以沒有簡單的方法。既然你自己生成文檔,爲什麼你認爲這將是無效的?一個簡單的測試就是檢查文件大小,並可能是前幾個字節(它應該以「%PDF」開頭)。 –

回答

1

是的,這是可能的,所用的相同JSON輸入總是產生相同的PDF。

你不會真的檢查PDF文件。 PDF是一種複雜的格式,基於PostScript和一些黑暗魔法。

你可以做的是產生一個「樣本」 PDF一次,然後編寫使用相同的輸入數據生成一個PDF文件中的單元測試,然後比較這對你的樣品。

這看起來是這樣的(只是一些示例代碼):

$myPdf = $pdfGenerator->generatePdf(); 
$samplePdf = file_get_contents('/some/example/file.pdf'); 

// with PHPunit 
$this->assertEquals(0, strcmp($myPdf, $samplePdf)); 

這是一個有點髒,但它的工作......如果事情在你的PDF或JSON實現更改,單元測試會讓你意識到這一點。

是很重要的,但是,你的PDF生成不插入任何「動態」數據,如日期戳。在這種情況下,PDF文件顯然可能永遠不會相同。