[英]Mass Update and Examing Attribute Change are not working (Laravel)
我有這段代碼,我想在用戶表上執行批量更新和檢查屬性更改。 但是,當我運行 php artisan 測試時,測試文件中出現“此測試未執行任何斷言”的錯誤。 我檢查了用戶表,但沒有任何變化。 有人能幫我嗎? 謝謝
<?php
namespace Tests\Feature;
use App\Models\Post;
//use http\Client\Curl\User;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Illuminate\Foundation\Testing\WithFaker;
use Tests\TestCase;
use App\Models\User;
class PostExampleTest extends TestCase
{
/**
* A basic feature test example.
*
* @return void
*/
public function test_example()
{
$post = Post::factory()->create();
//Create 20 more posts
$post1 = Post::factory()->count(20)->create();
$post->title = 'Post Test';
$post->save();
//Create 10 more users
$makeTenUsers = User::factory()->count(10)->create();
$user = User::find(1);
$user->name = 'Kaeith';
$user->save();
//Mass Updates
User::where('email_verified_at', '2021-02-28 23:50:21')
->update(['email'=>'kaeith']);
//Examining Attribute Changes
$post->isDirty();
$post->isDirty('title');
$user->isClean();
$user->isClean('name');
}
}
用戶表的結構是 'id', 'name', 'email', 'email_verified_at', 'password', 'created_at'
好吧,你沒有做出任何斷言。 isDirty()/isClean()
只返回布爾值。 都不是:
$post->isDirty();
$post->isDirty('title');
$user->isClean();
$user->isClean('name');
是斷言。 這是一個斷言。
// $this being the class that extends Tests\TestCase
$this->assertEquals($post->isDirty(), false);
在您的代碼中:
$post->isDirty();
應該等於false
因為$post
的更改已經保存( $post->save();
)$post->isDirty('title');
與此相同。批量更新不會更改並保存每個 model。 他們完全繞過了 eloquent 的事件。 考慮到這一點:
$user->isClean();
應該等於true
因為$user
的更改已經保存( $user->save();
)$user->isClean('name');
與此相同。User::factory()->create();
$user = User::first();
$user->isClean(); // true
$user->isClean('name'); // true
$user->isClean('email'); // true
$user->isDirty(); // false
$user->isDirty'name'); // false
$user->isDirty('email'); // false
$user->name .= 'a';
$user->isClean(); // false
$user->isClean('name'); // false
$user->isClean('email'); // true
$user->isDirty(); // true
$user->isDirty'name'); // true
$user->isDirty('email'); // false
$user->save();
$user->isClean(); // true
$user->isClean('name'); // true
$user->isClean('email'); // true
$user->isDirty(); // false
$user->isDirty'name'); // false
$user->isDirty('email'); // false
使用簡單的assertEquals
斷言
User::factory()->create();
$user = User::first();
$this->assertEquals($user->isClean(), true);
$this->assertEquals($user->isClean('name'), true);
$this->assertEquals($user->isClean('email'), true);
$this->assertEquals($user->isDirty(), false);
$this->assertEquals($user->isDirty'name'), false);
$this->assertEquals($user->isDirty('email'), false);
$user->name = 'a';
$this->assertEquals($user->isClean(), false);
$this->assertEquals($user->isClean('name'), false);
$this->assertEquals($user->isClean('email'), true);
$this->assertEquals($user->isDirty(), true);
$this->assertEquals($user->isDirty'name'), true);
$this->assertEquals($user->isDirty('email'), false);
$user->save();
$this->assertEquals($user->isClean(), true);
$this->assertEquals($user->isClean('name'), true);
$this->assertEquals($user->isClean('email'), true);
$this->assertEquals($user->isDirty(), false);
$this->assertEquals($user->isDirty'name'), false);
$this->assertEquals($user->isDirty('email'), false);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.