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

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

為什么在 PHPUnit 測試中調用 Collection 的 toArray() 方法不會將嵌套對

為什么在 PHPUnit 測試中調用 Collection 的 toArray() 方法不會將嵌套對

PHP
一只名叫tom的貓 2022-10-22 15:43:13
預期行為:集合 toArray()方法應該將集合轉換為普通集合array,并將集合的所有嵌套對象Arrayable作為數組的實例。實際行為:toArray()方法將集合轉換為普通array對象,但不會轉換嵌套對象。請注意,僅當toArray()通過 PHPUnit 調用時才會觀察到此行為。當toArray()在應用程序內或通過 Laravel Tinker 調用函數時,它會按預期工作。重現步驟:測試失敗的存儲庫克隆、安裝包、運行 PHPUnit。    <?phpnamespace Tests\Unit;use App\User;use Illuminate\Contracts\Support\Arrayable;use Illuminate\Foundation\Testing\RefreshDatabase;use Tests\TestCase;class CollectionToArrayTest extends TestCase{    use RefreshDatabase;    /** @test */    public function it_converts_nested_objects_that_are_an_instance_of_arrayable_to_an_array()    {        factory(User::class)->create();        $users = User::get();        // passed        $this->assertInstanceOf(Arrayable::class, $users[0]);        // Failed asserting that App\User Object is of type "array"        $this->assertIsArray($users->toArray()[0]);        // passed        $this->assertIsArray($users->toArray()[0]->toArray());    }}觀察:它以前工作過,可能與以前版本的 PHP 和 PHPUnit 一起工作,但是我無法確定它停止的那一刻。似乎在提供的 PHPUnit 測試中對 Collection調用時未調用EnumeratesValues::toArray() 。->toArray()Laravel 版本:7.0.7PHP 版本:7.3.15PHPUnit 版本:8.5.2
查看完整描述

1 回答

?
慕田峪9158850

TA貢獻1794條經驗 獲得超7個贊

解決了這個問題。

我在全球范圍內安裝了 Laravel Valet 和 PHPUnit。Valet 需要tightenco/collect與 Laravel Collections 沖突的包。

運行 PHPUnit 時,\Illuminate\Support\Collection被替換為Tightenco\Collect\Support\Collection不同的工作方式。

因此,我刪除了全局 PHPUnit 并改用本地版本。

我創建了一個GitHub 問題


查看完整回答
反對 回復 2022-10-22
  • 1 回答
  • 0 關注
  • 142 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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