Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/250.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHPUnit/Laravel静态类到方法生成错误_Php_Laravel_Laravel 4_Phpunit - Fatal编程技术网

PHPUnit/Laravel静态类到方法生成错误

PHPUnit/Laravel静态类到方法生成错误,php,laravel,laravel-4,phpunit,Php,Laravel,Laravel 4,Phpunit,我在使用PHPUnit测试我正在编写的Laravel包时遇到了问题。我正在编写一个扩展formbuilder的类,我已经在我自己的类和父类(lightize\Html\formbuilder)上尝试过它,但是我得到了相同的错误 我的测试是 use Illuminate\Html\FormBuilder as Form; class FormBuilderTest extends PHPUnit_Framework_TestCase { function test_basic_input

我在使用PHPUnit测试我正在编写的Laravel包时遇到了问题。我正在编写一个扩展formbuilder的类,我已经在我自己的类和父类(lightize\Html\formbuilder)上尝试过它,但是我得到了相同的错误

我的测试是
use Illuminate\Html\FormBuilder as Form;

class FormBuilderTest extends PHPUnit_Framework_TestCase {
    function test_basic_input() {
        $html = Form::text('test');

        $this->assertContains('input', $html);
    }
}
此操作失败,并显示以下消息

假设$this来自不兼容的上下文,则不应静态调用非静态方法illumb\Html\FormBuilder::text()

我不知道这是怎么回事,据我所知,这是在框架中从blade发出的同一个静态调用


有人能用这个方法告诉我写的方向吗?

正如错误所示,它不是一个静态方法

尝试:


但是我不熟悉Laravel,也不熟悉
illighted\Html\FormBuilder
,我不确定它是否有需要一些选项的构造函数。

问题是您将
FormBuilder
别名为
Form
。那只对了一半。因为
Form
类是访问
FormBuilder
的门面,如果要使用静态调用
Form::text()
调用它,则需要使用实际的门面

这意味着只需移除

use Illuminate\Html\FormBuilder as Form;
如果您有“名称空间问题”,请添加此use语句

use Illuminate\Support\Facades\Form;
或者,您也可以使用
$this->app

$form = $this->app['form'];
$html = $form->text();

我已经找出了这个问题的症结所在,我在Laravel的工作台目录下运行phpunit。这不是必要的课程,我试着改变我的课程来解决这个问题。我将测试存储在workbench/tests目录中,并将phpunit.xml指向它,但从根Laravel项目目录运行它。我的课现在看起来简单多了。谢谢你们的帮助

<?php
class FormBuilderTest extends TestCase {
    function test_basic_input() {
        $html = Form::text('text');

        $this->assertContains('input', $html);
    }
}

<?php
class FormBuilderTest extends TestCase {
    function test_basic_input() {
        $html = Form::text('text');

        $this->assertContains('input', $html);
    }
}