#unit-testing #yii2 #codeception #stub
Вопрос:
Я учусь использовать модульный тест в Yii2 с помощью кодирования и пытаюсь проверить, является ли выставление счетов «ежедневным» выставлением счетов из настроек продавца.
$this-gt;biller-gt;merchant-gt;detail-gt;rule_type == self::PERIODIC_MODE_DAILY
Я не знаю, как издеваться над этим rule_type
значением, если я использую Stub::make()
функцию.
То, что я пробовал до сих пор, — это использовать вложенный массив таким образом (не работает) :
$billing = Stub::make(Billing::class, [ 'status' =gt; Billing::STATUS_ACTIVE, 'set_periodic_by' =gt; Billing::SET_PERIODIC_BY_MERCHANT, 'biller' =gt; [ 'merchant' =gt; [ 'detail' =gt; [ 'rule_type' =gt; Billing::PERIODIC_MODE_DAILY, ] ] ] ]);
И я также попытался поиздеваться над каждой объектной моделью, используя другую заглушку::make()
$billing = Stub::make(Billing::class, [ 'status' =gt; Billing::STATUS_ACTIVE, 'set_periodic_by' =gt; Billing::SET_PERIODIC_BY_MERCHANT, 'getBiller' =gt; Stub::make(Biller::class, [ 'getMerchant' =gt; Stub::make(Merchant::class, [ 'getDetail' =gt; Stub::make(MerchantDetail::class, [ 'rule_type' =gt; Billing::PERIODIC_MODE_DAILY, ]) ]) ]) ]);
Как правильно создать «вложенные» возвращаемые значения функции с помощью заглушки? Любой комментарий или ответ всегда приветствуются.
Ответ №1:
Приведение вложенного массива к (object)
будет сделано
$billing = Stub::make(Billing::class, [ 'status' =gt; Billing::STATUS_ACTIVE, 'set_periodic_by' =gt; Billing::SET_PERIODIC_BY_MERCHANT, 'getBiller' =gt; (object) [ 'merchant' =gt; (object) [ 'detail' =gt; (object) [ 'rule_type' =gt; Billing::PERIODIC_MODE_DAILY, ] ] ] ]);