Перегрузка насмешкой - абстрактный класс - PullRequest
0 голосов
/ 04 сентября 2018

Я довольно новичок в TDD, и сейчас я пишу тесты в проекте Laravel, и я использую библиотеку Mockery. Я столкнулся с проблемой при попытке имитации перегрузки нового экземпляра класса.

Кажется, проблема в том, что смоделированный класс теряет свое наследование и поэтому не проходит проверку параметров при передаче в метод. Однако, когда я создаю издевательство над ребенком, не перегружая его, его наследство, похоже, подхватывается.

У меня есть занятия под названием «Родитель и ребенок». Ребенок расширяет Родителя.

// Test
public function test() {
    Mockery::mock('overload:Child');
    $results = service();
}

// Functions
public function service() {
    $child = new Child();
    serviceMethod($child);
}

public function serviceMethod(Parent $o) {
    // Do something
}

Возвращает, что serviceMethod ожидает Parent, а не Child.

Я, очевидно, упускаю здесь некоторые важные детали, кто-нибудь сможет указать мне на это?

1 Ответ

0 голосов
/ 12 июля 2019

Я столкнулся с этой же проблемой. Мы можем передать базовый класс в качестве второго аргумента. Это исправит ошибку типа.

Попробуйте это:

Mockery::mock('overload:Child', 'Parent');

или

Mockery::mock('overload:' . Child::class, Parent::class);
...