Как определить и кодировать пользовательский юнит-тест в сыром PHP? - PullRequest
1 голос
/ 19 июня 2019

Я использую какой-то специальный PHP-фреймворк.Я не могу использовать какие-либо фреймворки для юнит-тестирования по некоторым причинам, таким как PHPunit или codeception.Поэтому мне нужно написать свой собственный код для достижения этой цели.Есть ли примеры, способные закончить работу?

Могу ли я использовать этот метод вместо фреймворка?

    public function testFailure()
    {
       $a = 1; $b = 0;
       if($a !=== b){
          //throw exception here
       }
    }

Вместо -

    public function testFailure()
    {
        $this->assertEquals(1, 0); //return false
    }

1 Ответ

1 голос
/ 19 июня 2019

Абсолютно проще всего было бы в значительной степени то, что вы написали выше (хотя код на самом деле не действителен). Создайте исключение для утверждений, и у вас будет действительный способ модульного тестирования!

Теперь, я думаю, вы могли бы использовать что-то вроде phpunit weather или нет, вы используете какой-то собственный код, но я не буду торопиться с этим больше, чем сообщить вам.

Также:

!=== неверно, !== будет правильнее!


Далее, я бы порекомендовал вам создать некоторый тип статических или глобальных методов для вашего assertions вместо вышеупомянутого, чтобы вы могли легко повторно использовать код, генерирующий исключение, вместо того, чтобы писать одно и то же снова и снова :

// assert.php
class Assert {
  public static function isEqual($a, $b) {
    if ($a != $b) {
      throw new MyAssertionException('Not equal!');
    }
    return true;
  }

  public static function isSame($a, $b) {
    if ($a !== $b) {
      throw new MyAssertionException('Not same!');
    }
    return true;
  }

}

---

// test.php
include_once 'assert.php';

Assert::isEqual(1, 2);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...