我有一個關於PHPUnit的問題,以及它如何鎖定對象,以及我是否以不正確的方式測試,或者它是否僅僅是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');
最後一個斷言失敗。數據庫中的所有內容看起來都正確,如果我print_r兩個對象($ t和$ st),它都會顯示正確的信息。尋找到這些問題後,我發現,如果我在第一個斷言前添加克隆它的工作原理:
$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的鎖定對象等以後我不能用它一個斷言?
我測試錯了,我應該每個測試只有一個斷言?
在此先感謝。
可以在測試中有多個斷言,但我認爲你的問題更多的是你期望$ t對象被修改,但StudentTrack工廠方法沒有通過$ t,所以它不太可能修改它。 –