CakePHP 3.3:在测试中,它要求输入错误模板

时间:2016-09-20 22:15:03

标签: cakephp cakephp-3.0

我的插件只有一个控制器只有一个操作:

class AssetsController extends Controller
{
    /**
     * Renders an asset
     * @param string $filename Asset filename
     * @param string $type Asset type (`css` or `js`)
     * @return Cake\Network\Response|null
     */
    public function asset($filename, $type)
    {
        $this->response->type($type);
        $this->response->file(ASSETS . DS . $filename);

        return $this->response;
    }
}

这只发送一个资产文件。

现在我正在为不存在的资产文件编写测试。

public function testAssetNoExistingFile()
{
    $this->get('/assets/css/noexistingfile.css');

    $this->assertResponseFailure();
}

但它要求输入错误模板:

1) Assets\Test\TestCase\Controller\AssetsControllerTest::testAssetNoExistingFile
Cake\View\Exception\MissingTemplateException: Template file "Error/error500.ctp" is missing.

该插件没有模板,也没有带模板的应用。所以我希望它使用CakePHP核心的模板,但这不会发生。我哪里错了?

1 个答案:

答案 0 :(得分:1)

核心中没有<div id="dropdown-container"> <div id="index-tab" onclick="toggleMenu()"><a href="#">1</a> </div> <ul id="dropdown"> <li><a href="#"><span id="current-browse">1</span></a> <ul class="dropdown-items"> <li class="dropdown-item"><a href="#">2</a> </li> <li class="dropdown-item"><a href="#">3</a> </li> </ul> </li> </ul> </div>模板,这是应用程序必须提供的模板。

在测试插件时,您应该注册一个合适的测试应用程序环境,并为其提供必要的模板。如果你看看CakePHP核心和插件是如何做到的,他们会在Error/error500.ctp文件夹中创建/注册一个虚拟应用程序,然后可以放置这些模板文件。

另见