【问题标题】:Undefined variable in controller I am trying to test with phpunit in laravel控制器中的未定义变量我正在尝试在 laravel 中使用 phpunit 进行测试
【发布时间】:2013-10-11 02:01:16
【问题描述】:

我正在尝试学习单元测试的基础知识,我正在使用 phpunit 和 laravel

这是我的控制器

FatController.php

class FatController extends BaseController {

    public $result;

    public function __construct($result)
    {
        $this->result = $result;
    }

    public function getResult()
    {
        return $this->$result;
    }
}

和测试类

FatControllerTest.php

class FatControllerTest extends TestCase {

    /**
     * A basic functional test example.
     * @return void
     */

    public $test;

    public function setUp()
    {
        parent::setUp();
        $this->test = new FatController('100%');
    }

    public function testResult()
    {
        $result = $this->test->getResult();
        $this->assertTrue($result == '100%', 'message');
    }
}

据我所知,当测试运行时,它应该创建一个新变量 $test,它等于 FatController 的新实例,值为 100%

然后它运行 $test FatController Method getResult 应该返回 $result 已被构造函数定义为 '100%'

当测试运行时我得到了这个

PHP Warning:  Uncaught exception 'ErrorException' with message 'Undefined variable: result' in /Users/irish/Dropbox/www/youtube/app/controllers/FatController.php:15
Stack trace:
#0 /Users/irish/Dropbox/www/youtube/app/controllers/FatController.php(15): Illuminate\Exception\Handler->handleError(8, 'Undefined varia...', '/Users/irish/Dr...', 15, Array)
#1 /Users/irish/Dropbox/www/youtube/app/tests/FatControllerTest.php(22): FatController->getResult()
#2 [internal function]: FatControllerTest->testResult()
#3 /Users/irish/.composer/vendor/phpunit/phpunit/PHPUnit/Framework/TestCase.php(983): ReflectionMethod->invokeArgs(Object(FatControllerTest), Array)
#4 /Users/irish/.composer/vendor/phpunit/phpunit/PHPUnit/Framework/TestCase.php(838): PHPUnit_Framework_TestCase->runTest()
#5 /Users/irish/.composer/vendor/phpunit/phpunit/PHPUnit/Framework/TestResult.php(648): PHPUnit_Framework_TestCase->runBare()
#6 /Users/irish/.composer/vendor/phpunit/phpunit/PHPUnit/Framework/TestCase.php(783): PHPUnit_Framework_TestResult->run(Object(Fat in /Users/irish/Dropbox/www/youtube/app/controllers/FatController.php on line 15
PHP Fatal error:  Cannot access empty property in /Users/irish/Dropbox/www/youtube/app/controllers/FatController.php on line 15

所以我知道 $result 没有被定义为任何东西,当 getResult 尝试返回它时会导致错误,但我不知道我做错了什么

【问题讨论】:

    标签: php unit-testing laravel phpunit


    【解决方案1】:

    看起来你有一个错字。 return $this->$result; 应该是 return $this->result;

    【讨论】:

    • 谢谢。你介意向我解释一下当构造函数运行 $this->result = $result; 时会发生什么吗?从那时起使用 result 而不是 $result 意味着什么?
    • 您只是将$result 分配给一个属性。看看 PHP docs.
    猜你喜欢
    • 2014-09-11
    • 2016-01-14
    • 2014-03-04
    • 2016-08-10
    • 1970-01-01
    • 2010-12-28
    • 2016-06-04
    • 2014-06-15
    • 2016-01-31
    相关资源
    最近更新 更多