【问题标题】:Mockery mock class that returns another mocked class返回另一个模拟类的模拟模拟类
【发布时间】:2019-08-18 05:00:38
【问题描述】:

我有课

<?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】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-21
      • 1970-01-01
      • 2022-09-12
      • 1970-01-01
      • 2022-11-07
      • 2011-07-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多