在 laravel 5 中坚持使用 phpunit 测试
stuck with phpunit testing in laravel 5
我是 PHP 的新人。我试图在 laravel 5.
中创建一个登录表单
我有这个控制器方法。它工作正常。
public function choosePassword(ChoosePasswordRequest $req,Client $client)
{
$fn = $req->input('username');
$pass= $req->input('password');
$req = $client->createRequest('POST', 'http://localhost:8080/app/users/create');
$postBody = $req->getBody();
$postBody->setField('user_name', $fn);
$postBody->setField('password', $pass);
echo json_encode($postBody->getFields());
echo $response = $client->send($req);
}
并且我正在使用 phpunit 测试对此进行测试。 class 如下所示。
class choosePasswordFormTest extends TestCase{
public function testStoreSuccess()
{
$input = array(
'password' => 'password',
'user_name' => 'Abbas',
);
Request::replace($input);
Auth::shouldReceive('attempt')
->with(
array(
'password' => 'password',
'user_name' => 'Abbas',
))
->once()
->andReturn(true);
$response = $this->action('POST', 'GitController@choosePasswords');
$content = $response->getContent();
$data = json_decode($response->getContent());
}}
显示如下错误。我不知道该怎么办。请帮忙。
PHP Fatal error: Call to undefined method choosePasswordFormTest::getInputSource() in /home/webapp/vendor/laravel/framework/src/Illuminate/Http/Request.php on line 520
PHP Stack trace:
PHP 1. {main}() /tmp/ide-phpunit.php:0
PHP 2. IDE_Base_PHPUnit_TextUI_Command::main() /tmp/ide-phpunit.php:500
PHP 3. PHPUnit_TextUI_Command->run() /tmp/ide-phpunit.php:243
PHP 4. PHPUnit_TextUI_TestRunner->doRun() phar:///home/webapp/phpunit.phar/phpunit/TextUI/Command.php:186
PHP 5. PHPUnit_Framework_TestSuite->run() /home/webapp/vendor/phpunit/phpunit/src/TextUI/TestRunner.php:425
PHP 6. PHPUnit_Framework_TestCase->run() /home/webapp/vendor/phpunit/phpunit/src/Framework/TestSuite.php:751
PHP 7. PHPUnit_Framework_TestResult->run() /home/webapp/vendor/phpunit/phpunit/src/Framework/TestCase.php:722
PHP 8. PHPUnit_Framework_TestCase->runBare() /home/webapp/vendor/phpunit/phpunit/src/Framework/TestResult.php:643
PHP 9. PHPUnit_Framework_TestCase->runTest() /home/webapp/vendor/phpunit/phpunit/src/Framework/TestCase.php:766
PHP 10. ReflectionMethod->invokeArgs() /home/webapp/vendor/phpunit/phpunit/src/Framework/TestCase.php:881
PHP 11. choosePasswordFormTest->testStoreSuccess() /home/webapp/vendor/phpunit/phpunit/src/Framework/TestCase.php:881
PHP 12. Illuminate\Http\Request->replace() /home/webapp/tests/choosePasswordFormTest.php:16
这可能与 L5 尚未处于测试阶段有关 - Taylor 仍在编写测试代码。它将于下周进入测试版,所以我会等到那时。
当前 phpunit 的 alpha L5 中还有其他问题 - 像这样:https://github.com/laravel/framework/issues/6373#issuecomment-68617032
所以请密切注意 - 当问题解决后 - 尝试全新安装 L5,看看它是否能解决您的问题。
我是 PHP 的新人。我试图在 laravel 5.
中创建一个登录表单
我有这个控制器方法。它工作正常。
public function choosePassword(ChoosePasswordRequest $req,Client $client)
{
$fn = $req->input('username');
$pass= $req->input('password');
$req = $client->createRequest('POST', 'http://localhost:8080/app/users/create');
$postBody = $req->getBody();
$postBody->setField('user_name', $fn);
$postBody->setField('password', $pass);
echo json_encode($postBody->getFields());
echo $response = $client->send($req);
}
并且我正在使用 phpunit 测试对此进行测试。 class 如下所示。
class choosePasswordFormTest extends TestCase{
public function testStoreSuccess()
{
$input = array(
'password' => 'password',
'user_name' => 'Abbas',
);
Request::replace($input);
Auth::shouldReceive('attempt')
->with(
array(
'password' => 'password',
'user_name' => 'Abbas',
))
->once()
->andReturn(true);
$response = $this->action('POST', 'GitController@choosePasswords');
$content = $response->getContent();
$data = json_decode($response->getContent());
}}
显示如下错误。我不知道该怎么办。请帮忙。
PHP Fatal error: Call to undefined method choosePasswordFormTest::getInputSource() in /home/webapp/vendor/laravel/framework/src/Illuminate/Http/Request.php on line 520 PHP Stack trace: PHP 1. {main}() /tmp/ide-phpunit.php:0 PHP 2. IDE_Base_PHPUnit_TextUI_Command::main() /tmp/ide-phpunit.php:500 PHP 3. PHPUnit_TextUI_Command->run() /tmp/ide-phpunit.php:243 PHP 4. PHPUnit_TextUI_TestRunner->doRun() phar:///home/webapp/phpunit.phar/phpunit/TextUI/Command.php:186 PHP 5. PHPUnit_Framework_TestSuite->run() /home/webapp/vendor/phpunit/phpunit/src/TextUI/TestRunner.php:425 PHP 6. PHPUnit_Framework_TestCase->run() /home/webapp/vendor/phpunit/phpunit/src/Framework/TestSuite.php:751 PHP 7. PHPUnit_Framework_TestResult->run() /home/webapp/vendor/phpunit/phpunit/src/Framework/TestCase.php:722 PHP 8. PHPUnit_Framework_TestCase->runBare() /home/webapp/vendor/phpunit/phpunit/src/Framework/TestResult.php:643 PHP 9. PHPUnit_Framework_TestCase->runTest() /home/webapp/vendor/phpunit/phpunit/src/Framework/TestCase.php:766 PHP 10. ReflectionMethod->invokeArgs() /home/webapp/vendor/phpunit/phpunit/src/Framework/TestCase.php:881 PHP 11. choosePasswordFormTest->testStoreSuccess() /home/webapp/vendor/phpunit/phpunit/src/Framework/TestCase.php:881 PHP 12. Illuminate\Http\Request->replace() /home/webapp/tests/choosePasswordFormTest.php:16
这可能与 L5 尚未处于测试阶段有关 - Taylor 仍在编写测试代码。它将于下周进入测试版,所以我会等到那时。
当前 phpunit 的 alpha L5 中还有其他问题 - 像这样:https://github.com/laravel/framework/issues/6373#issuecomment-68617032
所以请密切注意 - 当问题解决后 - 尝试全新安装 L5,看看它是否能解决您的问题。