Ein Mock Problem

TheGreenDragon

Erfahrenes Mitglied
Hi,

versuche grad Tests zu schreiben und arbeite mit SimpleTest da es sich im Gegensatz zu PHPUnit so simple anhörte ^^

Nun ja der Schein muss wohl trügen, denn schon bei den einfachsten Sachen streikt PHP.

Hab den Code aus einem Buch: PHP5 für Fortgeschrittene ... naja kann mal jemand bitte drüber schauen, ich raff es einfach nicht mehr...

8.php
PHP:
<?php

//Eine Klasse zum Speichern von Briefmarken
class StampCollection {
	
	//Ein Array aus Briefmarken-Objekten
	private $collection = array();
	
	//Fügt eine Briefmarke in die Kollektion ein
	public function add($stamp) {
		$this->collection[] = $stamp;
	}
	
	//Holt eine Briefmarke aus der Kollektion
	public function fetch() {
		$stamp = each($this->collection);
		if($stamp) {
			return $stamp;
		}
		else {
			reset($this->collection);
			return FALSE;
		}
	}
}

//Speichert die Eigenschaften einer einzelnen Briefmarke
class Stamp {
	
	//Name der Briefmarke
	public $name;
	//Speichert den Preis einer Briefmarke
	public $price;
	
	//Erzeugt eine Briefmarke
	public function __construct( $name, $price ) {
		$this->name = $name;
		$this->price = $price;
	}
}
?>

11.php
PHP:
<?php
if(!defined('SIMPLE_TEST')) {
	define('SIMPLE_TEST','simpletest/');
}
require_once SIMPLE_TEST . 'unit_tester.php';
require_once SIMPLE_TEST . 'mock_objects.php';
require_once SIMPLE_TEST . 'reporter.php';
require_once '8.php';

//Einen MockStamp erzeugen
Mock::generate('Stamp');

//Die Testklasse erstellen
class TestOfStampCollection extends UnitTestCase {
	
	function __construct() {
		$this->UnitTestCase('StampCollection');
	}
	
	//Mit der Funktion testAdd() einen Test hinzufügen
	function testAdd() {
		//Das MockStamp-Objekt erzeugen
		$mockStamp = new MockStamp($this);
		
		//Die Klassenvariablen setzen
		$mockStamp->name = 'Penny Black';
		$mockStamp->price = 3500;
		
		//Die Briefmarkensammlung erzeugen
		$stampCollection = new StampCollection();
		
		//Den MockStamp in die Briefmarkensammlung einfügen
		$stampCollection->add($mockStamp);
		
		//Eine Kopie einer Briefmarke als Rückgabewert
		$stampCopy = $stampCollection->fetch();
		
		//die Namen der Briefmarken vergleichen
		$this->assertEqual($stampCopy->name, $mockStamp->name);
	}
}
$test = new TestOfStampCollection();
$test->run(new HtmlReporter());
?>

hier noch Screenshot von der Fehlermeldung:
screenshot.jpg

wenn ich das richtig verstehe kommt NULL von meinem Mock Objekt raus, aber der Code ist genau wie im Buch beschrieben.. ich versteh das nicht :confused:
 
Zurück