я создал сигнал, обрабатывающий класс с помощью pcntl_signal, который теперь я хочу использовать для sigalrm
проблема, которую я имею, состоит в том, что мой тест phpunit для тестирования работ signalclass (где я только использую, объявляют галочки в signalclass), но testclass для тестирования класса аварийного сигнала, который не делает в свою очередь использование signalclass, если я добавляю, объявляют (ticks=1) в моем alarmtests это также, работает
я думал, объявляют, что галочки только необходимы в коде обработки сигнала, который в моем случае находится в signalclass? но насколько я вижу, что также необходимо для кода, кто называет код обработки сигнала, это даже не работает в моем alarmclass, я должен поместить его в свой alarmtest класс!?
хотя использование strace сигнал поставляется независимое от галочек
таким образом, кто-либо понимает, почему я должен использовать, объявляют () в моих тестах (иногда)? или почему я должен объявить (ticks=1) также в коде, который использует его? это означало бы, что пользователь должен знать, как использовать, объявляют
Для использования тиков в глобальном масштабе необходимо иметь их в начале вызывающего скрипта. Вероятно, поэтому вы должны заново объявить его. Я не могу сказать наверняка, не зная ваш код. Ниже приведены некоторые примеры, которые работают с юнит-тестированием.
Вы можете объявить тики в вашем коде IIRC следующей конструкцией
function tick_function() {
// Do something
}
register_tick_function('tick_function');
declare (ticks=1) {
// Your code here
}
Или в качестве рабочего примера
function profile_memory()
{
echo '<!--' . memory_get_usage() . '-->';
}
register_tick_function('profile_memory');
declare (ticks=1)
{
$pass = md5('qwerty'); /* Tick executed */
$pass = strrev($pass); /* Tick executed */
echo $pass; /* Tick executed */
}
Это рабочий пример самодостаточной тиковой функции, которая работает в рамках юнит-теста
class TickTest {
private function profile_memory() {
static $i;
++$i;
echo "Tick $i\n";
}
public function __construct() {
}
public function doTicks() {
$register_tick_function = register_tick_function(
array($this,'profile_memory')
);
declare (ticks=1) {
$pass = md5('qwerty'); /* Tick executed */
$pass = strrev($pass); /* Tick executed */
}
}
}
И это юнит-тест (и да, я знаю, что это не настоящий тест).
require_once 'PHPUnit/Framework.php';
require_once dirname(__FILE__).'/../ticks.php';
class TickTestTest extends PHPUnit_Framework_TestCase {
protected $object;
protected function setUp() {
$this->object = new TickTest;
}
protected function tearDown() {
}
public function testDoTicks() {
$this->object->doTicks();
}
}
Глядя на выходные данные, тиковая функция вызывается при выполнении юнит-теста.
Некоторые ссылки