Тестирование событий модели Eloquent в Laravel 11Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Тестирование событий модели Eloquent в Laravel 11

Сообщение Anonymous »

Кажется, я не могу найти однозначного ответа о том, как протестировать следующий метод с помощью тестов PHPUnit в Laravel.

Код: Выделить всё

static::forceDeleted(
function ($survey) {
// Force delete the surveyable item.
$surveyable = $survey->surveyable;
if ($surveyable) {
$surveyable->forceDelete();
}
}
);
Как написать тест, который удаляет опрос, но проверяет, были ли удалены элементы в опросе.

Код: Выделить всё

static::forceDeleting(
function ($gasPipe) {
// Check if any surveys reference this gas pipe
if ($gasPipe->surveys()->count() > 0) {
return false;
}
}
);
Я хочу создать тесты, чтобы убедиться, что GasPipe не удаляется, когда этого не должно быть. Кажется, я столкнулся с проблемой, из-за которой статические методы загрузки не запускаются в тестах.

Код: Выделить всё

public function it_deletes_surveyable_when_no_other_surveys_reference_it()
{
require_once base_path('tests/TestHelpers.php');

$pipeAttrs = gasPipeAttributesFromTopojson(base_path('tests/Fixtures/topojson-pipe-1.json'));
$pipe = GasPipe::factory()->create($pipeAttrs);

$survey = Survey::factory()->create([
'surveyable_type' => GasPipe::class,
'surveyable_id' => $pipe->id,
'assigned_to_id' => $this->user->id,
]);

$survey->forceDelete();

// Survey should be permanently deleted
$this->assertDatabaseMissing('surveys', ['id' => $survey->id]);

// Surveyable should be permanently deleted (no other surveys reference it)
$this->assertDatabaseMissing('gas_pipes', ['id' => $pipe->id]);
}
assertDatabaseMissing на gas_pipes всегда завершается сбоем.


Подробнее здесь: https://stackoverflow.com/questions/797 ... laravel-11
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»