Unit testing CakePHP unittest中电子邮件中的完整URL

Unit testing CakePHP unittest中电子邮件中的完整URL,unit-testing,phpunit,cakephp-3.x,cakephp-3.2,Unit Testing,Phpunit,Cakephp 3.x,Cakephp 3.2,我想在我在CakePHP 3.2中的测试触发的电子邮件中获得完整的URL。我尝试了$this->Html->image('image.jpg',['fullBase'=>true])和$this->Url->build('/',true)的完整选项,但它们在测试中似乎不起作用 测试时如何强制电子邮件中的完整URL?在CLI环境中运行应用程序时没有主机,因为它不是web请求。您必须自己配置基本URL 引用文件: App.fullBaseUrl 完全限定的域名(包括协议) 到应用程序的根目录。这在生

我想在我在CakePHP 3.2中的测试触发的电子邮件中获得完整的URL。我尝试了
$this->Html->image('image.jpg',['fullBase'=>true])
$this->Url->build('/',true)
的完整选项,但它们在测试中似乎不起作用


测试时如何强制电子邮件中的完整URL?

在CLI环境中运行应用程序时没有主机,因为它不是web请求。您必须自己配置基本URL

引用文件:

App.fullBaseUrl

完全限定的域名(包括协议) 到应用程序的根目录。这在生成绝对值时使用 网址。默认情况下,此值是使用
$\u服务器生成的
环境但是,您应该手动定义它以进行优化
性能或您是否担心有人操纵
主机
标题。在CLI上下文(来自shell)中,无法读取
fullBaseUrl
$\u服务器
,因为不涉及Web服务器。你确实需要 如果您确实需要从shell生成URL(例如。 发送电子邮件时)

因此,您可以通过
App.fullBaseUrl

Configure::write('App.fullBaseUrl', 'http://localhost');
Router::fullBaseUrl('http://localhost');
或者更具体一点,通过
router::fullBaseUrl()

您可以在应用程序配置中配置它(
config/app.php
),这样即使在常规的web请求中,您的应用程序也不会再动态地构建它,从而使它也可以在测试环境中使用,或者,如果您只想应用于测试套件,请将它放在测试引导中(
tests/bootstrap.php
)使其全局应用,或在您的单个测试用例文件中设置

顺便说一句,这也是CakePHP核心测试套件所做的。当您不确定时,查看核心测试可能会给您一个提示

另见


Url->build([Url array],true)
,这就是您尝试过的吗?是:)(编辑问题以显示这一点)感谢您的解释!我认为需要从helpers页面(我查看的地方)的文档中链接/引用App.fullBaseUrl条目。