我有一个关于 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 是否会锁定对象,因此我无法在断言后使用它?
我测试错了吗,每次测试我应该只有一个断言吗?
提前致谢。