我想在CakePHP 3.2中的測試中觸發電子郵件中的完整URL。我嘗試了$this->Html->image('image.jpg', ['fullBase' => true])
和$this->Url->build('/', true)
的全部選項,但它們在測試中似乎不起作用。CakePHP中電子郵件中的完整URL單元測試
如何在測試期間強制電子郵件中的完整URL?
我想在CakePHP 3.2中的測試中觸發電子郵件中的完整URL。我嘗試了$this->Html->image('image.jpg', ['fullBase' => true])
和$this->Url->build('/', true)
的全部選項,但它們在測試中似乎不起作用。CakePHP中電子郵件中的完整URL單元測試
如何在測試期間強制電子郵件中的完整URL?
在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核心測試套件的做法。只要你不確定,看看核心測試可能會給你一個提示。
又見
謝謝你的解釋!我認爲需要從助手頁面(我查看的地方)鏈接/引用文檔中的App.fullBaseUrl條目。 –
'Url-> build([url array],true)',那是你試過的嗎? – arilia
是的:)(編輯問題顯示) –