Пиша плъгин за Magento и се опитвам да го тествам с PHPUnit Testing Integration от http://www.ecomdev.org . Точно сега се опитвам да тествам метод, който има два различни набора от настройки на конфигурацията, но по някаква причина вторият никога не се зарежда и първият се използва отново, така че тестовете, които очакват второто приспособление, се провалят.
Ето проблема, сведен до важните редове:
Modul.php (модел)
<?php
class MyModule_Module_Model_TestModel extends Mage_Payment_Model_Method_Abstract {
protected $sandbox;
public function __construct() {
$this->sandbox = $this->getConfigData('sandbox');
}
public function getSandboxSetting() {
return $this->sandbox;
}
}
?>
fixture config.yaml
config
default/payment/modul/sandbox: 0
fixture configSB.yaml
config
default/payment/modul/sandbox: 1
Modul.php (тест)
<?php
class MyModule_Module_Test_Model_TestModel extends EcomDev_PHPUnit_Test_Case {
public function setUp() {
parent::setUp();
$this->object = Mage::getModel('module/testmodel');
}
/**
* @test
* @loadFixture config
*/
public function testCorrectShopSettingsWithoutSandbox() {
$this->assertEquals('0', $this->object->getSandboxSetting());
}
/**
* @test
* @loadFixture configSB
*/
public function testCorrectShopSettingsWithSandbox() {
$this->assertEquals('1', $this->object->getSandboxSetting());
}
protected function tearDown() {
unset($this->object);
parent::tearDown();
}
}
?>
За съжаление вторият тест е неуспешен, без значение в какъв ред са извършени. Всъщност тестовият пакет ecomdev трябва да отхвърли приспособленията (разгледах tearDown() в case.php), но конфигурационните данни все още са там и не могат да бъдат презаписани. Има ли заобиколно решение или това е проблем с Magento / тестовия пакет?
https://github.com/magento/taf
? - person Dmytro Zavalkin   schedule 20.03.2012