【问题标题】:The response is not a view message when unit test fails in laravel当 laravel 中的单元测试失败时,响应不是视图消息
【发布时间】:2018-04-30 15:56:06
【问题描述】:

我是 laravel 5.5 单元测试的新手。

我在NewsController 名称索引中编写了一个方法。它返回如下视图:

public function index(Request $request)
{
     $news = DB::table('news')->orderBy('created_at', 'desc')->get();
     $data['news'] = $news;
     return view('news.index')->with($data);
}

我为此写了一个测试,如下所示:

 public function testIndex(){
     factory(News::class, 10)->create();
    $news = DB::table('news')->orderBy('created_at', 'desc')->get();
    $this->get('/admin/news')
       ->assertViewHas('news', $news)
       ->assertStatus(200);
}

但是测试失败了。消息是:

The response is not a view.

谁能帮帮我?

【问题讨论】:

  • 你能发布你的 web.php 代码吗?
  • Route::group(['prefix' => 'admin' , 'middleware' => 'auth:admin'] , function(){ Route::get('/news' , ' NewsController@index')->name('admin.news.index'); });

标签: php phpunit laravel-5.5


【解决方案1】:

我怀疑您收到了一些未引发的异常错误。有一些可能发生的事情。首先检查您的日志,看看那里是否有错误。如果没有,请尝试以下调试:

在您的路线中,您似乎不需要根据文档使用/ 定义“新闻”。 https://laravel.com/docs/5.6/routing#route-group-prefixes.

Route::group(['prefix' => 'admin', 'middleware' => 'auth:admin'] , function(){
    Route::get('news' , 'NewsController@index')->name('admin.news.index');
});

如果这不起作用,请将dd('here') 放在索引函数的顶部,看看您的测试是否成功。如果您没有到达那里,请检查您的中间件。

如果您仍然到达那里,请在返回之前dd()您的视图。

dd(view('news.index')->with($data))

检查这是什么类型的对象/其中的数据是什么。

最终,您要做的是遵循正在执行的代码和返回的内容的逻辑。希望这能让您走上正确的道路。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-31
    • 1970-01-01
    • 1970-01-01
    • 2020-01-01
    • 1970-01-01
    • 2015-10-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多