【发布时间】:2016-07-06 14:16:51
【问题描述】:
首先,我想说 - 我是 PHP (phpunit) 单元测试的新手。 在我的新项目(slim3 框架)中,我想测试我的控制器,例如 LoginController。
我的想法是(在单元测试方法中)
- 创建
LoginController的实例 - 在控制器 (DI) 中模拟一些服务
- 执行请求响应的方法(在我的控制器方法
__invoke)
我的问题是关于__invoke 方法的参数。
在 Slim3 中,请求的可调用方法有两个第一个参数:
RequestInterface $request 和 ResponseInterface $response
如何在我的单元测试类中创建这些参数?我正在寻找有关此问题的一些示例,但没有成功。
有什么建议吗?
我在 Slim3 测试中找到了一些模拟请求的代码:
protected function requestFactory()
{
$uri = Uri::createFromString('https://example.com:443/foo/bar?abc=123');
$headers = new Headers();
$cookies = array(
'user' => 'john',
'id' => '123',
);
$env = Slim\Http\Environment::mock();
$serverParams = $env->all();
$body = new Body(fopen('php://temp', 'r+'));
$request = new Request('GET', $uri, $headers, $cookies, $serverParams, $body);
return $request;
}
但我不确定这是个好方法。
感谢您的帮助
【问题讨论】: