В phpspec я могу высмеять возвращаемое значение метода?phpspec - mocking возвращаемое значение метода
, например:
class MyClass()
{
public function getStaffMemberNames()
{
// db call to get array of staff member names
}
public function sortStaffMemberNames()
{
return sort($this->getStaffMemberNames());
}
}
Я заинтересован в тестировании метода sortStaffMemberNames. Но он полагается на другой метод класса, который использует соединение db. Я хочу издеваться над getStaffMemberNames, поэтому я могу легко протестировать.
Как это можно достичь?
Плохая практика? Так что лучше издеваться над вызовом базы данных в каждом отдельном методе, который использует метод getStaffMemberNames()? – martindilling
phpspec пытается обеспечить соблюдение некоторых практик, среди которых принцип единой ответственности. В вашем случае «sortStaffMemberNames()» имеет свою собственную ответственность (сортировку) и должен быть извлечен в новый объект и получить результат «getStaffMemberNames» в качестве параметра. –
Точно. Всякий раз, когда что-то усложняется с помощью phpspec, это указывает на то, что у вас проблемы с дизайном. –