Tipp #10: Defekte Übersetzungen
Es kann passieren, dass Übersetzungen in Unit Tests nicht funktionieren, wenn man einen Helper mit einem Helper-Mock ersetzt (mit mockHelper()
und replaceByMock()
), insbesondere im Developer Mode, wo Übersetzungen nur funktionieren wenn sie für das richtige Modul definiert wurden.
Der Modulname wird in Mage_Core_Helper_Abstract
mit $this->_getModuleName()
ermittelt, also schauen wir uns die Methode einmal an:
/** * Retrieve helper module name * * @return string */ protected function _getModuleName() { if (!$this->_moduleName) { $class = get_class($this); $this->_moduleName = substr($class, 0, strpos($class, '_Helper')); } return $this->_moduleName; }
Wenn Deine Helper Klasse Your_Awesome_Helper_Data
ist, wird die Klasse des Helper-Mocks Mock_Your_Awesome_Helper_Data
heißen. Weil ein Modul namens Mock_Your_Awesome
nicht existiert, gibt es keine Übersetzungen.
Lösung
Um Helper Unit-Test-sicher zu machen (und als Nebeneffekt auch Rewrite-sicher), definiere _moduleName
explizit:
class Your_Awesome_Helper_Data extends Mage_Core_Helper_Abstract { protected $_moduleName = 'Your_Awesome'; }
Zuerst beschrieben hier: http://magento.stackexchange.com/questions/46255/ecomdev-phpunit-translation-not-working-with-mocked-helper
One Reply to “EcomDev_PHPUnit Tipp #10”
Comments are closed.