嘲笑 class 那 returns 另一个嘲笑 class

Mockery mock class that returns another mocked class

我有一个class

<?php

class Cards
{
    public function __construct($id) {
        $this->id = $id;
    }

    public function add($card) {
        // Make API call
        return true;
    }
}

和另一个 class returns 卡片 class

<?php

class Payment
{
    public function cards() {
        return new Cards('1');
    }
}

而且我似乎无法弄清楚如何模拟付款,所以它 returns 模拟了卡片。基本上我想

模拟支付所以它 returns 一个模拟的卡片,允许像

这样的功能
function() {
    $vault = new Payment;
    $cards = $vault->cards();

    if ($cards->add()) {
        // do stuff
    }
}

无需 API 调用支付处理器即可进行模拟和测试。

问题是您正在尝试使用 new 关键字实例化 Card class。这使得(几乎)不可能嘲笑它。您可以使用几种不同的技术来替换 new 关键字,最简单的方法是将实例传递到 Payment 构造函数或直接传递到方法中。