Php 从筛选器执行的Laravel单元测试方法给出错误参数#2不是数组
我正试图通过laravel进行单元测试,情况如下Php 从筛选器执行的Laravel单元测试方法给出错误参数#2不是数组,php,unit-testing,laravel-4,phpunit,Php,Unit Testing,Laravel 4,Phpunit,我正试图通过laravel进行单元测试,情况如下 我有一个控制器ArticlesController,其中除了getShow方法外,我对控制器的所有方法都有auth筛选器 public function __construct() { $this->beforeFilter('auth', array('except' => 'getShow')); } 这里是方法 public function getShow($id){ return View::make('a
我有一个控制器ArticlesController,其中除了getShow方法外,我对控制器的所有方法都有auth筛选器
public function __construct() {
$this->beforeFilter('auth', array('except' => 'getShow'));
}
这里是方法
public function getShow($id){
return View::make('articles.show', array('article'=>Article::find($id)));
}
这是我的测试代码
class ExampleTest extends TestCase {
/**
* A basic functional test example.
*
* @return void
*/
public function testBasicExample()
{
Route::enableFilters();
$response = $this->call('GET', 'articles/show/1');
$this->assertViewHas('article');
}
}
但是当我从cmd运行测试时,我得到了这个错误
ErrorException:array_replace_recursive():参数#2不是数组
注意:当我从身份验证筛选器异常中删除该方法时,我没有收到此错误但是,当我从整个控制器中删除过滤器时,错误再次出现问题在于数据库配置,我不知道必须定义用于测试的数据库配置,即使您已经定义了应用程序数据库的配置。
我只是在这个目录app/config/testing/中创建了一个文件database.php 并将数据库的配置
// app/config/testing/database.php
<?php
return array(
'default' => 'mysql',
'connections' => array(
'mysql' => array(
'driver' => 'mysql',
'host' => 'localhost',
'database' => 'laravel',
'username' => 'MY_USER_NAME',
'password' => 'MY_PASSWORD',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
),
)
);
//app/config/testing/database.php
现在我确信这与数据库有关。我注意到,每当测试执行与数据库连接的函数时,就会出现此错误。Article::find($id)| Auth::trust(…)