Table 对象测试中的 MissingRouteException

MissingRouteException in test of Table Object

我有一个 TableObject,它在 afterSave-Event 中发送电子邮件以通知管理员更改。从 cakephp-3 切换到 cakephp-4 后,测试失败并显示以下错误消息:

Cake\Routing\Exception\MissingRouteException: A route matching ... could not be found.

异常发生在我构建 link 的电子邮件模板中的一行:

$this->Url->build([
    'prefix' => 'Partner',
    'controller' => 'orders',
    'action' => 'view',
    $order->id,
]);

我认为路由不是在表对象测试的上下文中设置的,因此反向路由不起作用。 (我只在 运行 测试时出现错误,而不是在应用程序中发送电子邮件时出现错误)。

有没有办法在测试中加载所有路由?

自 4.x 以来,路线不再自动加载。 您需要添加

$this->loadRoutes(); 

进入您的 setUp() 或在测试之前 运行 现在主动加载它们。