2016-08-05 68 views
1

我想在CakePHP 3.2中的測試中觸發電子郵件中的完整URL。我嘗試了$this->Html->image('image.jpg', ['fullBase' => true])$this->Url->build('/', true)的全部選項,但它們在測試中似乎不起作用。CakePHP中電子郵件中的完整URL單元測試

如何在測試期間強制電子郵件中的完整URL?

+0

'Url-> build([url array],true)',那是你試過的嗎? – arilia

+0

是的:)(編輯問題顯示) –

回答

2

在CLI環境中運行應用程序時沒有主機,因爲它不是Web請求。您必須自行配置基本URL。從文檔

報價:

App.fullBaseUrl

完全限定域名(包括協議) 到應用程序的根目錄。這在生成絕對的 URL時使用。默認情況下,該值是使用$_SERVER 環境生成的。但是,您應該手動將其定義爲優化 的性能,或者如果您擔心操作頭的人員。在CLI上下文中(從shell中),fullBaseUrl不能從$_SERVER被讀取 ,因爲沒有涉及web服務器。如果您確實需要從外殼程序生成URL(例如發送電子郵件時爲 ),則您需要自行指定 。

所以,你既可以通過App.fullBaseUrl

Configure::write('App.fullBaseUrl', 'http://localhost'); 

或者更具體一點配置,以便它僅適用於路由器,通過Router::fullBaseUrl()

Router::fullBaseUrl('http://localhost'); 

您可以將其配置在您的應用程序配置(config/app.php),以便即使在常規的Web請求中,您的應用程序也不會再動態構建它,因此可以在測試中使用它環境,或者,如果你只是想申請測試套件,可以將它放在你的測試引導程序(tests/bootstrap.php)中,讓它可以全局應用,或者將它設置在你的個人測試用例文件中。

這就是CakePHP核心測試套件的做法。只要你不確定,看看核心測試可能會給你一個提示。

又見

+0

謝謝你的解釋!我認爲需要從助手頁面(我查看的地方)鏈接/引用文檔中的App.fullBaseUrl條目。 –