Я использую Symfony и пытаюсь протестировать функцию addStudentCard в классе "Student", которая добавляет объект "StudentCard" к собственности коллекции массивов $ studentCards И объект "Student" к собственности $ student в "StudentCard" учебный класс. Вот как я это сделал:
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;
//...
}
Чего я хочу добиться, так это протестировать эту функцию addStudentCard с помощью MockBuilder, я уже сделал это без использования макетов, выполнив:
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.