Как проверить корректный вызов конструктора с помощью PHPUnit - PullRequest
0 голосов
/ 18 апреля 2020

Используя PHPUnit, как правильно проверить, что конструктор (для класса Built в упрощенном примере ниже) правильно вызывается? Класс Container - это тестируемый класс. Я хочу быть в состоянии поймать такие вещи, как преднамеренная опечатка в ключе массива ниже. Использовать конструкторы невозможно, иначе это было бы просто.

class Container {
    public function create(string $input) {
        $request = new Built(["rid" => $input]); // Oops, typo in keyname.
    }
}
class Built {
    private $tid;
    public function __construct(array $params) {
        $this->tid = $params["tid"];
    }
}

Это ситуация, отличная от описанной в Как выполнить модульное тестирование методов класса, конструктор которого принимает некоторые аргументы? , потому что мой тестируемый класс создает экземпляр второго класса.

1 Ответ

1 голос
/ 18 апреля 2020

Конструктор не должен выполнять какую-либо работу, кроме 1) проверять передаваемые ему данные и прерывать построение объекта, за исключением случаев, когда данные отклоняются и 2) назначать передаваемые ему данные свойствам. Поэтому единственное, что можно и нужно проверять в отношении построения объекта, это то, что недопустимые данные отклоняются и не приводят к созданию объекта, нарушающего контракт класса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...