【发布时间】:2015-06-27 11:29:40
【问题描述】:
我有一个路由器类,它有 3 个参数:模式、回调和 http 方法。
如果回调为ControllerDispatch对象,则调用控制器并执行动作。
我不知道如何测试控制器调度。 这是我的 DispatcherTest.php 代码
public function testControllerDispatch()
{
$controller = new Routeria\Tests\FakeController;
$this->collection->addRoute(new Route('/testController/{id:int}', new ControllerDispatch($controller, 'fakeMethod')));
$request = $this->getMockBuilder('\Symfony\Component\HttpFoundation\Request')
->disableOriginalConstructor()
->getMock();
$request->expects($this->once())
->method('getPathInfo')
->will($this->returnValue('/testController/55'));
$request->expects($this->once())
->method('getMethod')
->will($this->returnValue('GET'));
$this->router->route($request);
$this->expectOutputString('Hello user id: 55');
$this->dispatcher->dispatch();
}
所有的测试都在如下图的test目录下..FakeController也包含在里面
而且,这是引导文件
<?php
$loader = require __DIR__ . '/../vendor/autoload.php';
$loader->add('Routeria\Tests', __DIR__);
这是我的假控制器
<?php
namespace Routeria\Tests;
class FakeController
{
public function fakeMethod($fakeID)
{
echo 'Hello user id: '.$fakeID;
}
}
而且,这是我的 phpunit.xml.dist
<?xml version="1.0" encoding="UTF-8"?>
<phpunit backupGlobals="false"
backupStaticAttributes="false"
colors="true"
convertErrorsToExceptions="true"
convertNoticesToExceptions="true"
convertWarningsToExceptions="true"
processIsolation="false"
syntaxCheck="false"
bootstrap="tests/bootstrap.php"
>
<testsuites>
<testsuite name="Routeria Testing">
<directory>./tests/</directory>
</testsuite>
</testsuites>
<filter>
<whitelist>
<directory>./src/</directory>
</whitelist>
</filter>
为什么它不起作用? 它说“找不到致命错误类'Routeria\Tests\FakeController'” 请帮忙.. 如果你想看代码,我已经上传到我的 git 了:https://github.com/terryds/routeria
【问题讨论】:
标签: php unit-testing phpunit