gpt4 book ai didi

Laravel 测试未通过

转载 作者:行者123 更新时间:2023-12-03 19:13:29 29 4
gpt4 key购买 nike

所以我正在学习为我的应用程序做测试以及它不想通过的测试之一,这是逻辑:基本上,当用户请求主页时,我希望数据库列表计数为 0 ,并且这通过了,那么我也希望 session 具有 NoBook 的错误键在这里它失败了。这是我尝试过的代码:

class BookDisplayManagmentTest extends TestCase
{
use RefreshDatabase;

/** @test */
public function Show_error_message_when_there_is_no_book_to_display_in_index_page()
{
//Request the home page
$response = $this->get(route('home'));

// I expect the count on the database book equal 0
$this->assertCount(0, book::all());

//Then I also expect that the session will flash an error with key NoBook
$response->assertSessionHasErrors('NoBook');
}

}

但是我收到此错误的问题是:
Session is missing expected key [errors]. Failed asserting that false is true.

以及添加 session 错误的代码:
<?php

namespace App\Http\Controllers;

use App\Books;
use Illuminate\Http\Request;

class IndexController extends Controller
{
/** @show index function */
public function index()
{
$book = Books::paginate(7);
if(!$book->count())
{
session()->now('NoBook','There is no books at the moment');
}
return view('index', compact('book'));
}
}

最佳答案

您正在使用 session()正在向 session 添加 key 不是错误键 .

因此,由于您没有从 Controller 传递错误 - 那么您的测试“成功”失败。

如果要将错误传递给 session ,则必须使用 MessageBag,例如使用以下代码:

      /** @show index function */
public function index()
{
$book = Books::paginate(7);
$errors = [];

if(!$book->count())
{
$errors['NoBook'] = 'There is no books at the moment';
}
return view('index', compact('book'))->withErrors($errors);
}

关于Laravel 测试未通过,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61421292/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com