При тестировании с помощью PHPSpec как я могу использовать интерфейсы классов, введенные в мои методы, а не фактический конкретный класс?Как использовать интерфейсы классов при использовании PHPSpec
Например, у меня есть Product
класс, который впрыскивает VariationInterface
в метод:
/**
* ...
*/
public function addVarient(VarientInterface $varient)
{
return $this->varients->add($varient);
}
Хотя с PHPSpec не имеет контейнера МОК связывать VarientInterface
к Varient
я не могу действительно проверить свои классы.
Не лучше ли использовать код для интерфейса, а не конкретный класс?
Вы должны закодировать с интерфейсом, а не конкретный класс. Однако, это не вы в своем примере. Поскольку метод «добавить» не существует на интерфейсе, вы фактически кодируете реализацию. Также ответил на трекер проблемы с phpspec: https://github.com/phpspec/phpspec/issues/584#issuecomment-67090359 –