【发布时间】:2018-06-21 20:33:28
【问题描述】:
我正在尝试编写一个简单的 Web 测试来使用 phpunit 测试我的 silex api,但是 当我尝试运行它时,我不断收到此错误..
1) App\Tests\BlogControllerTest::testInitialPage
TypeError: Argument 1 passed to Symfony\Component\HttpKernel\Client::__construct() must implement interface Symfony\Component\HttpKernel\HttpKernelInterface, null given, called in C:\vendor\silex\silex\src\Silex\WebTestCase.php on line 63
这是我的网络测试
<?php
namespace App\Tests;
use Silex\WebTestCase;
class BlogControllerTest extends WebTestCase
{
public function createApplication()
{
require dirname(dirname(__DIR__)) . '/src/Application.php';
}
public function testInitialPage()
{
$client = $this->createClient();
$crawler = $client->request('GET', '/Blog/1');
$this->assertTrue($client->getResponse()->isOk());
}
}
我的 Composer 文件的内容:
{
"require": {
"silex/silex": "~2.0",
"symfony/validator": "^4.0",
"crell/api-problem": "~1.7",
"tobiassjosten/responsible-service-provider": "^1.0"
},
"require-dev": {
"phpunit/phpunit": "6",
"symfony/browser-kit": "^4.0",
"symfony/css-selector": "^4.0"
},
"autoload": {
"psr-4": {
"App\\": "src/",
"Tests\\": "tests/"
}
}
}
【问题讨论】:
-
第 63 行到底是哪一行?是
createClient()吗?那么就像报错所说的,你得给实现HttpKernelInterface(或者mock)的函数加个参数 -
1) App\Tests\BlogControllerTest::testInitialPage TypeError: 传递给 Symfony\Component\HttpKernel\Client::__construct() 的参数 1 必须实现接口 Symfony\Component\HttpKernel\HttpKernelInterface,给定 null,在第 63 行 C:\vendor\silex\silex\src\Silex\WebTestCase.php 中调用 C:\vendor\symfony\http-kernel\Client.php:42 C:\vendor\silex\silex\src\Silex\ WebTestCase.php:63 C:\tests\CarType\CarTypeControllerTest.php:15