Аргумент 1 передан в Illuminate \ Foundation \ Testing \ TestCase :: actAs () - PullRequest
0 голосов
/ 06 мая 2018

Я хочу попробовать сделать тест, участник, который вошел в систему, может создать работу, это мой тестовый код.

/** @test */
public function member_can_create_a_job(){
    $member = factory('App\Models\M_member')->create();
    $this->actingAs($member);

    $job = factory('App\Models\M_lowker')->make();
    $this->post('/lowker/tambah-lowker', $job->toArray())->assertRedirect('/lowker/tambah-lowker');
}

Это мое приложение \ Models \ M_member

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class M_member extends Model{
    protected $table = "member";
    public $timestamps = false;
    protected $fillable = ["nama", "email", "password", "alamat", "tgl_lahir", "remember_token"];

    public function jobs()
    {
        return $this->hasMany('App\Models\M_lowker');
    }

    public function comments()
    {
        return $this->hasMany('App\Models\M_komentar');
    }
}

Когда я запускаю, я получаю ошибку в cmd это .

1) Tests \ Feature \ JPSTest :: member_can_create_a_job TypeError: Аргумент 1, передаваемый в Illuminate \ Foundation \ Testing \ TestCase :: actAs (), должен быть экземпляром Illuminate \ Contracts \ Auth \ Authenticatable, экземпляром App \ Models \ M_member, названный в I: \ W 42 N \ Home Work \ Semester 5 \ Rekayasa Perangkat Lunak \ Praktikum \ jps \ tests \ Feature \ JPSTest.php в строке 35

I: \ W 42 N \ Домашняя работа \ Семестр 5 \ Rekayasa Perangkat Lunak \ Praktikum \ jps \ vendor \ laravel \ framework \ src \ Illuminate \ Foundation \ Testing \ Concerns \ InteractsWithAuthentication.php: 16 I: \ W 42 N \ Home Work \ Семестр 5 \ Rekayasa Perangkat Lunak \ Praktikum \ jps \ tests \ Feature \ JPSTest.php: 35

ОШИБКА! Тесты: 3, Утверждения: 3, Ошибки: 1.

Ответы [ 2 ]

0 голосов
/ 06 мая 2018

Эта проблема решена с помощью модификации моей модели M_member следующим образом.

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Contracts\Auth\Authenticatable;
use Illuminate\Auth\Authenticatable as AuthenticableTrait;

class M_member extends Model implements Authenticatable{
    use AuthenticableTrait;
0 голосов
/ 06 мая 2018

Эта ошибка говорит о том, что используемая модель не расширяет контракт Illuminate \ Contracts \ Auth \ Authenticatable, что необходимо для использования метода actAs. Если у вас есть авторизация laravel, вы можете проверить модель пользователя в качестве примера. Что-то вроде:

<?php

namespace App;

use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;

class User extends Authenticatable
{ 

Итак, попробуйте расширить вашу модель, чтобы иметь эту функциональность.

или вы можете реализовать контракт Authenticatable для вашей модели следующим образом

class User extends Model implements
    AuthenticatableContract,
    AuthorizableContract,
    CanResetPasswordContract
{
    use Authenticatable, Authorizable, CanResetPassword;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...