помогите с simpletest

e2site

Новичок
помогите с simpletest

Здравствуйте помогите разобратся с simpletest, до этого ни разу не пользовался.

как писать тест для такого класса

PHP:
final class Command {
  private static $Cmd;

  public static function run($name) {
    if(isset(self::$Cmd[$name])) {
        return self::$Cmd[$name]->run();
    } else {
      return 0;
    }
  }

  public static function add($name,PCommand $method) {
    self::$Cmd[$name] = $method;
  }
}
выполняется соответственно методы класса
PHP:
Command::add("add",new classAdd);
 

zerkms

TDD infected
Команда форума
бугага :)

чтобы научиться тестировать - лучше всего следовать практике "tests first" (по крайней мере лучше изучать, начиная с неё, имхо)
т.е. сначала пишешь тест - потом пишешь код.
это позволит научиться писать тестируемый код (т.е. код, который возможно протестировать без костылей)

конкретно этот класс можно протестировать, создав мок на classAdd и проверив, что:

при вызове правильного Command::run('name') метод run мока вызовется единожды и на выходе получишь предустановленную строку.
а при вызове неверного 'not_exists_name' на выходе получишь 0.

мок генерится так:
mock::generate('classAdd');

получить его так:
$mock = new mockclassAdd();

описать поведение так:
$mock->expectOnce('run', array());
$mock->setReturnValue('run', 'some_expected_string');

дальше - сам :)

ps: статика - зло.
 

zerkms

TDD infected
Команда форума
e2site
ps: потому что увеличивает связанность компонентов между собой.
да и полиморфизму очень противодействует.
 
Сверху