ну это коммандная строка, а я же говорю что хочу через браузер, мне так удобнее.я так делаю
phpunit <путь/к/папке или файлу с тестом>
Не мок, простой объект не могу сделать чтоб он реагировал) Похоже в пхп с этим не доделали и это нереально.покажи мок
Как это есть? Если я обшерстил инет и там ясно сказано что нету вебрепорта. То есть как, можно запустить с командной строки, оно генерирует отчет и его можно посмотреть в браузере. НО! я не хочу делать 2 действия, если можно одно - обновить окно в браузере, улавливаешь?все там есть. тебе не репорт нужен а раннер. доку открой
<?php
require_once 'PHPUnit/Framework.php';
class MyIterator implements Iterator
{
private $var = array();
public function __construct($array)
{
if (is_array($array)) {
$this->var = $array;
}
}
public function rewind() {
echo "rewinding\n";
reset($this->var);
}
public function current() {
$var = current($this->var);
echo "current: $var\n";
return $var;
}
public function key() {
$var = key($this->var);
echo "key: $var\n";
return $var;
}
public function next() {
$var = next($this->var);
echo "next: $var\n";
return $var;
}
public function valid() {
//$var = $this->current() !== false;
$var = (current($this->var) !== false);
echo "valid: {$var}\n";
return $var;
}
}
class FooTest extends PHPUnit_Framework_TestCase {
function testFoo()
{
$a = array(1,2);
$i = new MyIterator($a);
foreach ( $i as $k => $v ) {
echo "$k => $v\n";
}
$mi = $this->getMock('Iterator');
$mi->expects($this->at(0))
->method('rewind');
$mi->expects($this->at(1))
->method('valid')
->will($this->returnValue(1));
$mi->expects($this->at(2))
->method('current')
->will($this->returnValue(1));
$mi->expects($this->at(3))
->method('key')
->will($this->returnValue(0));
$mi->expects($this->at(4))
->method('next')
->will($this->returnValue(2));
$mi->expects($this->at(5))
->method('valid')
->will($this->returnValue(1));
$mi->expects($this->at(6))
->method('current')
->will($this->returnValue(2));
$mi->expects($this->at(7))
->method('key')
->will($this->returnValue(1));
$mi->expects($this->at(8))
->method('next')
->will($this->returnValue(false));
$mi->expects($this->at(9))
->method('valid')
->will($this->returnValue(false));
echo "mock working...\n";
foreach ( $mi as $k => $v ) {
echo "$k => $v\n";
}
}
}
Простой напиши класс. Класс. Да, не мок. Именно класс. Да, да ты правильно прочитал - класс. Который реагирует на next(). Next(). Нет, не foreach. Да, точно-точно не foreach. Что? Да нет даже и не for. Уверен. Да, точно не foreach и не for. Уверен. Да именно всего лишь на next( $obj). Абсолютно. Да. Ну нет же не foreach. Да, да все правильно next(). Спасибо.Не мок, простой объект не могу сделать чтоб он реагировал)
А как реагирует на isset, на count ?если ты имеешь в виду функцию next то у меня в голове не укладывается - как при оо можно сетовать на то, что де функция не член класса дает какой-то не такой результат. Максимум чем могу помочь - все претензии к функции.
а count( $obj ) откуда узнает?) Должен хук срабатывать)дык откуда он узнает что ты next на экземпляр сделал? телепатически? все претензии к функции
count и форыч на объект срабатывает потому что там типа get_object_vars идет. никакие там не хуки. с хуками к тониАвтор оригинала: HraKK
а count( $obj ) откуда узнает?) Должен хук срабатывать)
public static function assert
Tests: 4, Assertions: 4, Failures: 1.
PHPUnit 3.4.5 by Sebastian Bergmann.
....I....................................................... 60 / 1759
skipped
............................................................ 1740 / 1759
...................
Time: 30 seconds, Memory: 98.00Mb
OK, but incomplete or skipped tests!
Tests: 1759, Assertions: 16590, Incomplete: 1.
У меня ZDE отказывает подсвечивать сомплит при $this-> а при self отлично работает, что в общем-то и логично, так что это как по мне логичней использовать.но в общем-то, это дело привычки.
спасибо, попробую!есть опция --verbose
class Collection
{
public function __construct( $array )
{
foreach( $array as $key => $value )
$this->$key = $value
}
}
MyMethod()
{
return new Collection( array('key'=>'fsdfsdf','key2'=>'fdsfsdfc'));
}
$Collection = MyMethod();
self::assertSame( $Collection->key = 'fsdfsdf';
self::assertSame( $Collection->key2 = 'fdsfsdfc';
$MockCollection = $this->getMock('Collection');
$MockCollection->key = 'fsdfsdf';
$MockCollection->key2 = 'fdsfsdfc';
self::assertSame( $Collection, $MockCollection );
Точно.не обладают полиморфностью