@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 и выбирать подходящий для вас метод создания кастомных утверждений. Спасибо за вашу информативную инструкцию!