Создайте макет query
и укажите, что происходит на ->get()
.В итоге тест выглядел бы примерно так:
public function testGetDisplayMode() {
$mockQuery = $this->getMockBuilder('Query') // Or whatever the query class is
->setMethods(['get'])
->getMock();
$mockQuery->expects($this->once())
->method('get')
->with('master_video')
->willReturn('foo');
$mockRequest = $this->getMockBuilder('Request') // Or whatever the request is
->getMock();
$mockRequest->query = $mockQuery;
$sut = new Bar($mockRequest) // Or however you instantiate the class with the mock request.
$mode = $sut->getDisplayMode();
// Do your assertions on the returned mode here.
}
Как правило, я обнаружил, что когда я делаю что-то подобное, у меня есть фиктивный объект, возвращающий фиктивный объект, это запах кода,Ваш метод здесь не нуждается в запросе $ this->, ему нужен объект запроса.Вы должны передать это непосредственно объекту или передать его этому методу.
Не зная больше о классе, который вы делаете, я не могу дать больше советов.
Если что-тотрудно написать тест, это признак того, что вы не оптимально разработали свой код.