Пример кода для массива

Есть ли реализованный метод для преобразования примера в массив, чтобы я мог передать его прямо в почтовый запрос в качестве параметров. Прямо сейчас я должен сделать:

/**
     * @dataprovider invalidUserActivityRequestProvider
     */
    public function it_does_not_get_tracked_for_an_invalid_request(ApiTester $I, Example $example)
    {
        $userActivity = [
            'timestamp' => isset($example['timestamp']) ? $example['timestamp'] : null ,
            'email' => isset($example['email']) ? $example['email'] : null ,
            'type' => isset($example['type']) ? $example['type'] : null ,
            'duration' => isset($example['duration']) ? $example['duration'] : null ,
            'distance' => isset($example['distance']) ? $example['distance'] : null ,
            'repetitions' => isset($example['repetitions']) ? $example['repetitions'] : null ,
        ];

        $I->sendPOST('/useractivity', $userActivity);
        $I->seeResponseCodeIs(422);
    }

    protected function invalidUserActivityRequestProvider () : array {
        return [
            [
                'timestamp' => Carbon::now()->toDateTimeString(),
                'email' => '[email protected]',
                'type' => 'run',
                'duration' => 300,
                'distance' => 1000,
                'repetitions' => 1
            ],

            [
                'timestamp' => Carbon::now()->toDateTimeString(),
                'email' => '[email protected]',
                'type' => 'invalidType',
                'duration' => 300,
                'distance' => 1000,
                'repetitions' => 1
            ],

            [
                'timestamp' => Carbon::now()->toDateTimeString(),
                'email' => '[email protected]',
                'type' => 'run'
            ],
        ];
    }

но я хотел бы что-то вроде:

public function it_does_not_get_tracked_for_an_invalid_request(ApiTester $I, Example $example)
    {
        $I->sendPOST('/useractivity', $example->toArray());
        $I->seeResponseCodeIs(422);
    }

person Chris    schedule 23.10.2017    source источник
comment
Example $example означает, что $example является объектом класса Example, но вы используете его как массив $example['timestamp'], поэтому я понятия не имею, что вы здесь делаете.   -  person AbraCadaver    schedule 23.10.2017
comment
Однако $I->sendPOST('/useractivity', (array)$example);   -  person AbraCadaver    schedule 23.10.2017
comment
Пример @AbraCadaver позволяет получить доступ к свойствам таким образом. Пожалуйста, взгляните на: codeception.com/docs/07-AdvancedUsage   -  person Chris    schedule 23.10.2017
comment
@AbraCadaver :) тем не менее, кастинг действительно работает   -  person Chris    schedule 23.10.2017
comment
Да, я не знаю codeception, так что, возможно, у кого-то есть идея получше.   -  person AbraCadaver    schedule 23.10.2017


Ответы (2)


Я не знаю Codeception, но возможен кастинг:

$I->sendPOST('/useractivity', (array)$example);
person AbraCadaver    schedule 23.10.2017

Извините, не работает!...

Попытка assertEqual (array) $example и массива приводит к:

- Expected | + Actual
@@ @@
Array (
-    Binary String: 0x002a0064617461 => Array (...)
+    'id' => 6
+    'unique_id' => '2199033651380'
+    'data' => Array (...)
+    'user_id' => 1
+    'brand_id' => 1
+    'infrastructure' => 'AT'
)
person MarioMan    schedule 23.10.2017