簡體   English   中英

PHPUnit assertDatabaseHas()返回TypeError

[英]PHPUnit assertDatabaseHas() returning TypeError

在這里嘗試測試模型,但是每次我嘗試使用assertDatabaseHas方法時,都會給我類型錯誤。 Laravel 5.4和PHPUnit 6。

    PHPUnit 6.1.4 by Sebastian Bergmann and contributors.

..E                                                                 3 / 3 (100%)

Time: 815 ms, Memory: 10.00MB

There was 1 error:

1) Tests\Unit\ModelTest::test_model_creation
TypeError: Argument 2 passed to PHPUnit\Framework\Assert::assertThat() must be an instance of PHPUnit\Framework\Constraint\Constraint, instance of Illuminate\Foundation\Testing\Constraints\HasInDatabase given, called in /home/vagrant/domains-api/vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/InteractsWithDatabase.php on line 22

/home/vagrant/domains-api/vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/InteractsWithDatabase.php:22
/home/vagrant/domains-api/tests/Unit/ModelTest.php:36

ERRORS!
Tests: 3, Assertions: 2, Errors: 1.

測試類中的代碼:

$this->assertDatabaseHas('domains', [
            'domain' => $domain,
            'domain_type' => 'full_domain',
        ]);

我使用laravel文檔作為參考,語法似乎是正確的(至少對我而言)。 https://laravel.com/docs/5.4/database-testing#introduction

在此先感謝您的幫助。

問題似乎是Laravel 5.4不支持版本6引入的PHPUnit的名稱空間。

如果比較分支,很容易看到:

https://github.com/laravel/framework/blob/5.4/src/Illuminate/Foundation/Testing/Constraints/HasInDatabase.php#L8

https://github.com/laravel/framework/blob/master/src/Illuminate/Foundation/Testing/Constraints/HasInDatabase.php#L6-L8

我認為最好的解決方案是使用PHPUnit 5.x運行測試,或者可能更新laravel/framework以使用master。 由於主服務器可能包含重大更改,因此第一種似乎是目前較為安全的方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM