Целью Mocks and Stubs является замена зависимости от функциональности зависимостей, например, когда у вас есть что-то вроде
class Foo
{
public function __construct($apiConnector) {
$this->apiConnector = $apiConnector
}
}
, где $apiConnector
- это зависимость, используемая для вызова API, тогда вы заглушаете или смоделируете эту зависимость в своей собственной реализации. Так как эта зависимость вызывается через его общедоступный интерфейс Foo, вы заглушаете метод, который запускает защищенный метод в зависимости.
Если, однако, нет зависимости, но вызов API сделан из testclass, то вам нужно написать собственный класс, который расширяет ваш testclass и реализует свою собственную функцию вызова API, например,
class FooMock extends Foo
{
protected function queryAPI()
{
return $fixture;
}
}
Затем вы протестируете этот класс вместо фактического.
Если ваш класс действительно подключается к веб-сервису, см. Главу Создание заглушек и насмешка над веб-сервисами