Я пытаюсь создать макет объекта \ SplObserver с помощью PHPunit и прикрепить макет объекта к \ SplSubject.Когда я пытаюсь прикрепить макет объекта к классу, который реализует \ SplSubject, я получаю заразительную фатальную ошибку, говорящую, что макет объекта не реализует \ SplObserver:
PHP Catchable fatal error: Argument 1 passed to ..\AbstractSubject::attach() must implement interface SplObserver, instance of PHPUnit_Framework_MockObject_Builder_InvocationMocker given, called in ../Decorator/ResultCacheTest.php on line 44 and defined in /users/.../AbstractSubject.php on line 49
Более или менее, вот код:
// Edit: Using the fully qualified name doesn't work either
$observer = $this->getMock('SplObserver', array('update'))
->expects($this->once())
->method('update');
// Attach the mock object to the cache object and listen for the results to be set on cache
$this->_cache->attach($observer);
doSomethingThatSetsCache();
Я не уверен, имеет ли это значение, но я использую PHP 5.3 и PHPUnit 3.4.9