PHPUnit について質問があり、それがどのようにオブジェクトをロックしているように見えるのか、間違った方法でテストしているのか、それとも PHPUnit 上のものなのかについて質問がありました。これが私のテストコードです
$t = Track::create(array('name'=>'test track'));
$this->assertEquals(0, $t->student_tracks, 'Empty track should be empty');
$st = StudentTrack::create(array('track_id' => $t->id, 'completion'=>'0')); //Add item
$this->assertEquals(1, $t->student_tracks, 'There should now be something in this track');
最後のアサートは失敗します。データベース内のすべてが正しく見え、両方のオブジェクト ($t と $st) を print_r すると、正しい情報が表示されます。問題を調べた後、最初のアサートの前にクローンを追加すると機能することがわかりました。
$t = Track::create(array('name'=>'test track'));
$cl = clone $t;
$this->assertEquals(0, $cl->student_tracks, 'Empty track should be empty');
$st = StudentTrack::create(array('track_id' => $t->id, 'completion'=>'0')); //Add item
$this->assertEquals(1, $t->student_tracks, 'There should now be something in this track');
だから私の質問は:
PHPUnit はオブジェクトをロックするので、アサート後に使用できませんか?
テストごとに 1 つのアサートのみを使用する必要がありますか?
前もって感謝します。