Hallo zusammen,
ich starte gerade mich in die Entwicklung von Extension auf Basis von Extbase und Fluid einzuarbeiten.
Die ersten Plugins laufen auch auf dieser Basis. :-)
Jetzt wollte ich aber noch einen Schritt weiter gehen und TDD mit PHPUnit verwenden.
Das Plugin läuft, die Testes soweit auch.
[b]Jetzt meine Frage:[/b]
Im Domain Model kann ich ja mit @validate festlegen wie ein Wert auszusehen hat, damit er valide ist.
Leider verstehe ich nicht, wie ich das im Test berücksichtige.
Hier mal ein ganz simples Beispiel:
Code aus dem Domain Model. Der übergebene Integerwert darf nicht NULL sein und soll zwischen 1 und 5 liegen:
/** * Amount of the product in stock * * @var integer * @validate NotEmpty, NumberRange(startRange = 1, endRange = 5) */ protected $amount;
Entsprechende Getter und Setter sind vorhanden:
/** * Returns the amount * * @return integer $amount */ public function getAmount() { return $this->amount; } /** * Sets the amount * * @param integer $amount * @return void */ public function setAmount($amount) { $this->amount = $amount; }
Jetzt dachte ich: "Hey, wenn ich überprüfen will, ob tatsächlich ein Fehler auftritt, rufe ich die Funktion in meiner Testklasse einfach auf und übergebe als Integerwert 12. Dann müsste der Test ja fehlschlagen"
Hier der Code aus meiner Testklasse:
class Tx_Ajaxtest_Domain_Model_ProductsTest extends Tx_Extbase_Tests_Unit_BaseTestCase { /** * @var Tx_Ajaxtest_Domain_Model_Products */ protected $fixture; public function setUp() { $this->fixture = new Tx_Ajaxtest_Domain_Model_Products(); } public function tearDown() { } /** * @test */ public function getAmountReturnsInitialValueForInteger() { $this->fixture->setAmount(); $this->assertSame( NULL, $this->fixture->getAmount() ); } /** * @test */ public function setAuthorForIntegerSetsAuthor() { $this->fixture->setAuthor(12); $this->assertSame( 12, $this->fixture->getAuthor() ); } }
Leider ist dem nicht so. Wo ist hier mein Verständnisproblem? Was muss ich tun, wenn ich dies Prüfen will?
Wäre dankbar wenn mir jemand hier weiterhelfen könnte!
Besten Dank!