我正在使用 Symfony 并且我正在尝试测试“Student”类中的 addStudentCard 函数,该函数将“StudentCard”对象添加到 $studentCards 数组集合属性中,并将“Student”对象添加到“StudentCard”类中的 $student 属性中。我是这样做的:
class StudentCard {
private $student;
public function getStudent();
public function setStudent();
//...
}
class Student {
private $studentCards;
public function getStudentCards();
public function addStudentCard(StudentCard $studentCard){
$studentCard->setStudent($this);
$this->studentCards[] = $studentCard;
return $this;
//...
}
我想要实现的是使用 MockBuilder 测试此 addStudentCard 函数,我已经通过以下方式在不使用模拟的情况下完成了此操作:
class StudentTest extends AbstractTestCase {
public function testAddStudentCard(){
$studentCard = new StudentCard();
$student = new Student();
$student->addStudentCard($studentCard);
$student->assertSame($studentCard, $student->getStudentCards()[0]);
$student->assertSame($student, $studentCard->getStudent());
}
这按预期工作没有问题。
我想要的是替换该行:
$studentCard = new StudentCard();
像这样:
$studentCard = $this->getMockBuilder(StudentCard::class)->getMock();
但我得到的是错误:断言 null 与 Student 类的对象相同。