<rmcreative>

RSS

Все заметки с тегом «PHPUnit»

Можно уточнить:

    (1)
    (1)
  1. Зачистка контекста в unit-тестах

    9 ноября 2020

    Unit-тесты должны быть изолированы. То есть тесты должны проходить если выполнять из по-одному или если включить в PHPUnit режим выполнения в случайном порядке через phpunit.xml.dist:

    <phpunit executionOrder="default">

    Для этого, если тест работает с окружением (например, с файловой системой), окружение нужно подчищать. Причём подчищать и до и после через setUp() и tearDown():

    final class MyTest extends PHPUnit\Framework\TestCase
    {
        public function setUp(): void
        {
            $this->cleanup();
     
            $path = realpath(sys_get_temp_dir());
            mkdir($path, 755);
        }
     
        public function tearDown(): void
        {
            $this->cleanup();
        }
     
        private function cleanup(): void
        {
            $path = realpath(sys_get_temp_dir());
            rmdir($path)
        }

    Зачистка делается два раза и до и после потому как если какой-то тест упадёт, зачистка в tearDown() не выполнится и окружение "встанет".

    8 комментариев
  2. Как получить mock из ActiveRecord

    5 июля 2016

    На тостере в комментариях к вопросу спросили, как получить mock ActiveRecord, чтобы он не пытался лезть в базу и возможно ли.

    Возможно. В случае PHPUnit делается так:

    $post = $this->getMockBuilder('\app\model\Post')
        ->setMethods(['save', 'attributes'])
        ->getMock();
    $post->method('save')->willReturn(true);
    $post->method('attributes')->willReturn([
        'id',
        'status',
        'title',
        'description',
        'text'
    ]);

    Особенность заключается в том, что перекрыть надо ещё и метод attributes() потому как ActiveRecord лезет за схемой в базу данных, что нам не нужно.

    5 комментариев
  3. PHPUnit в Netbeans

    19 сентября 2009

    Настройка и запуск модульных тестов PHPUnit в NetBeans.

    Читаем:

    В блоге автора

    С комментариями на хабре

    Комментировать