在 Yii2 中制作一个用于嵌套函数的 Stub

Make a Stub for nesting function in Yii2

我学会了在 Yii2 中使用 Codeception 中的单元测试,并尝试检查账单是否是来自商家设置的“每日”账单。

$this->biller->merchant->detail->rule_type == self::PERIODIC_MODE_DAILY

如果我使用 Stub::make() 函数,我不知道如何模拟 rule_type 值。

到目前为止我尝试的是像这样使用嵌套数组(不起作用):

$billing = Stub::make(Billing::class, [
    'status'        => Billing::STATUS_ACTIVE,
    'set_periodic_by' => Billing::SET_PERIODIC_BY_MERCHANT,
    'biller' => [
        'merchant' => [
            'detail' => [
                'rule_type' => Billing::PERIODIC_MODE_DAILY,
            ]
        ]
    ]
]);

而且我还尝试使用另一个 Stub::make()

来模拟每个对象模型
$billing = Stub::make(Billing::class, [
    'status'        => Billing::STATUS_ACTIVE,
    'set_periodic_by' => Billing::SET_PERIODIC_BY_MERCHANT,
    'getBiller' => Stub::make(Biller::class, [
        'getMerchant' => Stub::make(Merchant::class, [
            'getDetail' => Stub::make(MerchantDetail::class, [
                'rule_type' => Billing::PERIODIC_MODE_DAILY,
            ])
        ])
    ])
]);

如何使用 Stub 正确创建“嵌套”函数 return 值?随时欢迎任何评论或回答。

将嵌套数组转换为 (object) 即可

$billing = Stub::make(Billing::class, [
    'status'                => Billing::STATUS_ACTIVE,
    'set_periodic_by'       => Billing::SET_PERIODIC_BY_MERCHANT,
    'getBiller'             => (object) [
        'merchant'          => (object) [
            'detail'        => (object) [
                'rule_type' => Billing::PERIODIC_MODE_DAILY,
            ]
        ]
    ]
]);