功能测试 Laravel ViewComposer
Functional testing Laravel ViewComposer
我正在尝试使用标准设置在 Laravel 中测试控制器,这工作正常。下面的测试通过了。
class ExampleTest extends TestCase {
/**
* A basic functional test example.
*
* @return void
*/
public function testBasicExample()
{
$crawler = $this->client->request('GET', '/');
$this->assertTrue($this->client->getResponse()->isOk());
}
但是一旦我介绍了一个 ViewComposer - 注册了一个 ServiceProvider
class MenuComposer {
const NONE = 0;
const READWRITE = 1;
const READONLY = 2;
/**
* constructor largely for testing purposes
* @param View $view
* @param Auth $auth
*/
public function __construct()
{
}
public function compose($view)
{
$access = $this->getAccessLevel();
$view->with('menuItems',$this->menuItems($access));
}
生产代码按预期工作 - 但测试失败,因为它
** ErrorException:尝试获取非对象的 属性(视图:/srv/host_share/sds/app/views/hello.blade.php)
**
所以传入 compose 方法的 $view 变量是 null/empty ?谁能建议我可以做些什么来进行测试 运行 并继续使用 viewcomposer 功能?
根据您的错误,Laravel 告诉您这个 "Trying to get property of non-object" 发生在以下 blade 模板中
(View: /srv/host_share/sds/app/views/hello.blade.php)
这可能意味着您正在向视图传递一个变量(如 menuItems
),然后尝试获取该变量的 属性
$menuItems->some_prop
$another_var->some_prop
我会注释掉视图中的每个 属性 访问,然后将每个访问添加回来,直到错误再次发生。一旦您弄清楚 哪个 视图变量不是 object,您就可以调试为什么测试环境没有用 object 正确填充它。
我正在尝试使用标准设置在 Laravel 中测试控制器,这工作正常。下面的测试通过了。
class ExampleTest extends TestCase {
/**
* A basic functional test example.
*
* @return void
*/
public function testBasicExample()
{
$crawler = $this->client->request('GET', '/');
$this->assertTrue($this->client->getResponse()->isOk());
}
但是一旦我介绍了一个 ViewComposer - 注册了一个 ServiceProvider
class MenuComposer {
const NONE = 0;
const READWRITE = 1;
const READONLY = 2;
/**
* constructor largely for testing purposes
* @param View $view
* @param Auth $auth
*/
public function __construct()
{
}
public function compose($view)
{
$access = $this->getAccessLevel();
$view->with('menuItems',$this->menuItems($access));
}
生产代码按预期工作 - 但测试失败,因为它 ** ErrorException:尝试获取非对象的 属性(视图:/srv/host_share/sds/app/views/hello.blade.php) **
所以传入 compose 方法的 $view 变量是 null/empty ?谁能建议我可以做些什么来进行测试 运行 并继续使用 viewcomposer 功能?
根据您的错误,Laravel 告诉您这个 "Trying to get property of non-object" 发生在以下 blade 模板中
(View: /srv/host_share/sds/app/views/hello.blade.php)
这可能意味着您正在向视图传递一个变量(如 menuItems
),然后尝试获取该变量的 属性
$menuItems->some_prop
$another_var->some_prop
我会注释掉视图中的每个 属性 访问,然后将每个访问添加回来,直到错误再次发生。一旦您弄清楚 哪个 视图变量不是 object,您就可以调试为什么测试环境没有用 object 正确填充它。