返回另一个模拟类的Mockery mock类

问题描述 投票:0回答:1

我上课了

<?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调用的情况下进行模拟和测试。

php unit-testing mocking phpunit mockery
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.