模拟类返回另一个模拟类

时间:2019-03-27 15:02:31

标签: php unit-testing mocking phpunit mockery

我上课

<?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');
    }
}

而且我似乎无法弄清楚如何模拟付款,因此它会返回模拟的卡。基本上我想

模拟付款,因此它会返回模拟卡,允许类似的功能

function() {
    $vault = new Payment;
    $cards = $vault->cards();

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

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

1 个答案:

答案 0 :(得分:0)

问题是您正在尝试使用RabbitTemplate.receive()关键字实例化RabbitTransactionManager类。这使得(几乎)无法模拟它。您可以使用几种不同的技术来替换Card关键字,最简单的方法是将实例传递到new构造函数中或直接传递给方法。