Intereting Posts

Почему PHPUnit не считает эту функцию запущенной?

У меня такой код внутри моего модульного теста:

// $item_id was defined above $originalMock = $this->getMock( 'Item', array( 'foo' ), array( $item_id )); $originalMock->expects( $this->once() )->method( 'foo' ); $originalMock->functionThatCallsFoo(); 

Говорят, что я вообще не вызываю foo , хотя functionThatCallsFoo & foo var_dumping изнутри.

Существует несколько вызовов функций между публично вызываемой функцией и той, которую я ожидаю. Я убедился, что нет статических функций, вызываемых цепочкой. (Были изначально, но я изменил их, чтобы посмотреть, смогу ли я получить эту работу вообще)

EDIT Я изменил свой запрос на expects вызова метода, вызванного напрямую из functionThatCallsFoo и он все еще не работает.

Я собираюсь ответить на этот вопрос, так как у меня был целый ряд проблем с моим кодом. Надеюсь, этот ответ будет небольшим контрольным списком, если у кого-то другие проблемы в будущем.

  1. Мой последний метод был статичным, поэтому мне нужно было использовать staticExpects вместо ожиданий
  2. Мои статические вызовы использовали self ::, но мне нужно было использовать static :: (PHP> = 5.3)
  3. static :: не может использоваться в частной функции, в отличие от self ::

В конце концов, я могу теперь понять, почему статические функции являются злыми.