#php #unit-testing #mocking #phpunit #mockery
#php #модульное тестирование #насмешливый #phpunit #издевательство
Вопрос:
У меня есть класс
<?php
class Cards
{
public function __construct($id) {
$this->id = $id;
}
public function add($card) {
// Make API call
return true;
}
}
и другой класс, который возвращает класс Cards
<?php
class Payment
{
public function cards() {
return new Cards('1');
}
}
И я, кажется, не могу понять, как имитировать платеж, чтобы он возвращал издевательские карточки. В принципе, я хочу
Макет платежа, таким образом, он возвращает макет Cards, который позволил бы выполнять функцию типа
function() {
$vault = new Payment;
$cards = $vault->cards();
if ($cards->add()) {
// do stuff
}
}
можно издеваться и тестировать без выполнения вызовов API для платежного процессора.
Ответ №1:
Проблема в том, что вы пытаетесь создать экземпляр Card
класса, используя new
ключевое слово. Это делает (почти) невозможным его издевательство. Вы можете использовать пару различных методов для замены new
ключевого слова, самым простым было бы передать экземпляр в Payment
конструктор или непосредственно в метод.