я хочу проверить метод в репозитории с событиями phpunit laravel - PullRequest
0 голосов
/ 28 сентября 2018

Привет всем, я новичок в модульном тестировании и застрял на этом

Вот метод репозитория, который я тестирую =>

public function store(array $input){

        $input['billing_contact'] = (isset($input['billing_contact'])) ? 1 : 0;  
        \DB::beginTransaction();
        try {
            $new_contact = $this->model->create($input);

            //EVENT CREATE ACCOUNT (USER)
            event(new EventCreateUserWithContact($new_contact));
            \DB::commit();
        }
        catch(\Exception $e){
            \DB::rollback();
            return false;
        }


        return $new_contact;

    }

Вот тест, который я пытаюсьсделать =>

class ContactTest extends TestCase
{
    use WithFaker;
    protected $contact;/**/
    protected $container;/**/

    public function setup()
    {
        parent::setup();
        $this->container = new \Illuminate\Container\Container();
        $this->contact = new Contact();
        DB::beginTransaction();
    }
    public function tearDown()
    {
        DB::rollback();
        parent::tearDown();
    }
    /**
     * A basic test example.
     *
     * @return void
     */
    public function testContactRepo()
    {
//        Event::();
        $publisher = factory(\App\Models\Publisher::class)->create();
        $contact =  factory(\App\Models\Contact::class)->create();


//
        $data =  [

            'first_name' => $this->faker->word,
            'last_name'=>  $this->faker->word,
            'email' => $this->faker->unique()->safeEmail,
            'phone'=> 112321321,
            'job'=> $this->faker->word,
            'billing_contact'=> $this->faker->word,
            'approve_delete_at'=> $this->faker->date('Y-m-d',  '1461067200'),
            'publisher_id'=> $publisher->id,

        ];

        $rep = new ContactRepositoryEloquent($this->container);

        $contact = $rep->store($data);
    dd($contact);


    }
}

Я не понимаю, как получить новый контактный объект, потому что я получил ошибку исключения, когда я запускаю тест (я получаю ложь). Мне нужно создать поддельное событие, чтобы сделатьэто сработало?

1 Ответ

0 голосов
/ 01 октября 2018

Я нахожу решение, используя =>

\ Illuminate \ Support \ Facades \ Event :: fake ();

Это помогает передать события и продолжить тестирование!

...