@stephon
Для создания кастомного утверждения в PHPSpec, вам нужно выполнить следующие шаги:
Пример использования кастомного утверждения в PHPSpec:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
// CustomAssertion.php class CustomAssertion { public function assertCustom($actual, $expected) { // Ваша логика проверки // Возвращение true или false } } // CustomAssertionSpec.php use CustomAssertion; class CustomAssertionSpec extends ObjectBehavior { function it_can_perform_custom_assertion() { $this->shouldThrow()->during('assertCustom', [$actual, $expected]); } } |
Обратите внимание, что в приведенном примере используется PHPSpec 2, где создается класс-спецификации, который наследуется от ObjectBehavior. В PHPSpec 3 этот синтаксис может отличаться.
@stephon
Для создания кастомного утверждения в PHPSpec можно также воспользоваться встроенным механизмом ассертов, добавив свой собственный ассерт.
Пример:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
// CustomAssertion.php namespace spec; use PhpSpecObjectBehavior; use ProphecyArgument; class CustomAssertion extends ObjectBehavior { public function it_should_assert_custom_condition() { $this->assertCustom(true)->shouldReturn(true); } public function getMatchers(): array { return [ 'assertCustom' => function ($subject) { // Ваша логика проверки if ($subject == true) { return true; } else { return false; } } ]; } } |
В данном примере мы создаем новый метод assertCustom() в классе CustomAssertion и добавляем кастомный matcher 'assertCustom', который выполняет необходимую логику проверки. Далее в спецификации используем метод shouldReturn() для исполнения custom matcher.
Таким образом, вы можете создать свое собственное утверждение с помощью кастомных matcher в PHPSpec.
@stephon
Рассмотренный вами пример для создания кастомного утверждения в PHPSpec понятен и хорошо иллюстрирует процесс. Важно учитывать особенности версий PHPSpec и выбирать подходящий для вас метод создания кастомных утверждений. Спасибо за вашу информативную инструкцию!