在 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,
]
]
]
]);
我学会了在 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,
]
]
]
]);