gourmet / faker

CakePHP 3 plugin to support Faker's data generation/seeding in fixtures, migrations, etc.
MIT License
18 stars 3 forks source link

Fixture fatal error #5

Open florant359 opened 4 years ago

florant359 commented 4 years ago

I am trying to use Faker in my fixtures to generate data for my tests, i tried your fixture example but when i try to run my test i get this error.

Fatal error: Declaration of Gourmet\Faker\TestSuite\Fixture\TestFixture::insert(Cake\Database\Connection $db) must be compatible with Cake\TestSuite\Fixture\TestFixture::insert(Cake\Datasource\ConnectionInterface $db) in C:\laragon\www\my_app_name\vendor\gourmet\faker\src\TestSuite\Fixture\TestFixture.php on line 11 Can you please help me find out what is missing. My php version is : 7.3.5 My cakephp version : 3.7 fzaninotto/faker: 1.4.*

My PostsFixture

`<?php

namespace App\Test\Fixture;

use Gourmet\Faker\TestSuite\Fixture\TestFixture;

class PostsFixture extends TestFixture {

public $fields = [
    'id' => ['type' => 'integer'],
    'title' => ['type' => 'string', 'length' => 255, 'null' => false],
    'body' => 'text',
    'published' => ['type' => 'integer', 'default' => '0', 'null' => false],
    'created' => 'datetime',
    'updated' => 'datetime',
    '_constraints' => [
        'primary' => ['type' => 'primary', 'columns' => ['id']]
    ]
];

public $records = [
    [
        'id' => 1,
        'title' => 'First Article',
        'body' => 'First Article Body',
        'published' => '1',
        'created' => '2007-03-18 10:39:23',
        'updated' => '2007-03-18 10:41:31'
    ],
    [
        'id' => 2,
        'title' => 'Second Article',
        'body' => 'Second Article Body',
        'published' => '1',
        'created' => '2007-03-18 10:41:23',
        'updated' => '2007-03-18 10:43:31'
    ],
    [
        'id' => 3,
        'title' => 'Third Article',
        'body' => 'Third Article Body',
        'published' => '1',
        'created' => '2007-03-18 10:43:23',
        'updated' => '2007-03-18 10:45:31'
    ]
];

public $number = 20;
public $guessers = ['\Faker\Guesser\Name'];

public function init() {
    $this->customColumnFormatters = [
        'id' => function () { return $this->faker->numberBetween(count($this->records) + 2); },
        'published' => function () { return rand(0,3); }
    ];
    parent::init();
}

}`

jadb commented 4 years ago

The plugin wasn't upgraded/tested for this version of CakePHP.

It looks like the error is caused because a method signature was changed.

I don't have time to fix that right now but if you want, you could that yourself and submit a PR. The error message is pretty self-explanatory.