亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在 Laravel 中斷言分頁?

如何在 Laravel 中斷言分頁?

PHP
POPMUISE 2024-01-19 10:08:40
我有一個具有以下方法的類別模型:public static function index(){    return self::has('posts')->paginate(1);}我的類別控制器:public function index(){    $categories = Category::index();    return view('categories.index', compact('categories'));}這是我嘗試過的,我正在使用 RefreshDatabase 特征。public function test_index_view_is_working(){    factory(Post::class, 5)->create();    $response = $this->get(route('categories.index'));    $response->assertViewHas('categories', Category::index());}該測試由于某種原因失敗:Failed asserting that two objects are equal.at tests/Feature/CategoryTest.php:38    37|         $response->assertViewIs('categories.index');  > 38|         $response->assertViewHas('categories', Category::index());--- Expected+++ Actual@@ @@                 'dispatchesEvents' => Array ()                 'observables' => Array ()                 'relations' => Array (+                    'posts' => Illuminate\Database\Eloquent\Collection Object (...)                 )                 'touches' => Array ()                 'timestamps' => true
查看完整描述

2 回答

?
白板的微信

TA貢獻1883條經驗 獲得超3個贊

出現此錯誤的原因是因為不知何故posts急切地從視圖/控制器加載,而不是從測試加載。


我猜return self::has('posts')->with('posts')->paginate(1);可以修復它。


或者,您可以測試頁面底部是否有分頁。因為{{ $categories->links() }}會添加類似的東西Previous,Next你仍然可以尋找它。


$response = $this->get(route('categories.index'));

$response->assertSee('Next');

此外,您可以確保對類別進行分頁,但不能確保您已在頁面底部添加鏈接。


use Illuminate\Contracts\Pagination\Paginator;

...


$response = $this->get(route('categories.index'));

$this->assertInstanceOf(Paginator::class, $response->viewData('categories'));


查看完整回答
反對 回復 2024-01-19
?
慕尼黑的夜晚無繁華

TA貢獻1864條經驗 獲得超6個贊

setUp您是否在測試方法中運行任何遷移/工廠?

看起來您的數據庫中可能沒有帖子記錄,因此$categories進入視圖時為null。

另請注意,如果您只想確保視圖具有$categories可以使用的變量$response->assertViewHas('categories');。如果您想確保視圖獲取實際數據,這并不理想。


查看完整回答
反對 回復 2024-01-19
  • 2 回答
  • 0 關注
  • 159 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號