Сделайте заглушку для функции вложенности в Yii2

#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,  ]  ]  ] ]);