Hallo,
ich habe mir einen kleinen Unittest geschrieben
$aParams = array();
$aParams['oxarticles__oxtitle'] = 'mein Titel';
$oArticle = oxNew('oxarticle');
$oArticle->assign($aParams);
$oArticle->save();
Das ganze ist eigentlich ja noch kein Unittest, sondern nur ein Testartikel.
Wenn ich diesen Code irgendwo im Shop anwende, funktioniert er ohne Probleme und der Artikel steht dann auch in der Datenbank.
Wenn ich den Test in der Unittestumgebung aufrufe, bekomme ich
1) Unit_ArticleTest::testDataFields
array_keys() expects parameter 1 to be array, null given
C:\shop\core\oxlang.php:438
C:\shop\core\oxlang.php:391
C:\shop\core\oxconfig.php:1124
C:\shop\core\oxconfig.php:1212
C:\shop\core\oxconfig.php:1324
C:\unittests\unit est_utils.php:418
C:\shop\core\oxarticle.php:3987
C:\shop\core\oxarticle.php:3987
C:\shop\core\oxarticle.php:937
C:\unittests\unit\ArticleTest.php
C:\unittests\unit\OxidTestCase.php:219
Der Fehler entsteht in der Zeile $oArticle->assign($aParams);
Nun sind das alle core Klassen, die ich ja eigentlich nicht ändern muss, bzw. sollte.
Daher denke ich, das in meiner Testsuite etwas eingestellt werden muss.
Ich habe den Checkout von http://svn.oxid-esales.com/trunk/unittests/ genutzt.
Ein Test wie $this->assertEquals(1,1); funktioniert. PHPUnit funktioniert also an sich.
Ich habe den oxArticle mit einem Modul erweitert. Im Shop wird dieses Modul genutzt, das auch funktioniert (zusätzliche Datenbankfelder). Kann es damit etwas zu tun haben? Muss ich eigene Module nochmal explizit beim Unittest laden?
Irgendwelche Ideen?