Обновление столбца в модульном тесте не отраженоPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Обновление столбца в модульном тесте не отражено

Сообщение Anonymous »

Следующий тест не пройден:

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

/** @test */
public function set_shift_on_given_availability_to_a_candidate()
{
$candidate = $this->createCandidateWithFixedAvailability(pow(2, 3) - 1);
$candidate->availabilities[0]->setShift(App\Availability::SHIFT_TYPES['AM']);
$candidateShifts = $candidate->availabilities[0]->shifts;

$this->assertEquals(count($candidateShifts), 1);
$this->assertTrue(in_array('AM', $candidateShifts));
}
Когда я пытаюсь использовать методы с ремесленником, я получаю ожидаемые результаты:

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

>>> $candidate->availabilities()->first()->shifts();
=> [
"AM",
]
>>> $candidate->availabilities()->first()->setShift(App\Availability::SHIFT_TYPES['PM']);
=> null
>>> $candidate->availabilities()->first()->shifts();
=> [
"PM",
]
Подробности реализации используемых методов:

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

public function setShift(...$shiftTypes)
{
\DB::table($this->table)
->where([
['candidate_id', '=',  $this->candidate_id],
['day_of_week_id', '=', $this->day_of_week_id]
])
->update(['shifts' => array_sum ($shiftTypes)]);
}

public function shifts()
{
$namedShifts = [];
foreach (Availability::SHIFT_TYPES as $key => $val) {
if($this->shifts & $val) {
array_push($namedShifts, $key);
}
}
return $namedShifts;
}
Я использую отдельную тестовую базу данных с признаком DatabaseTransactions. Я не понимаю, почему обновление не меняет значения столбцов, когда я пытаюсь получить значения столбцов с помощью сдвигов () в моем модульном тесте, пока он работает с Tinker.

Из того, что я вижу, использование построителя запросов к БД для обновления столбца, а затем получение динамического свойства этого столбца не отражает изменение обновления, поэтому либо я получаю его с помощью построителя запросов, либо присваиваю значение сдвига динамическому свойству. в функции setShift при успешном запуске обновления. Просто странно, что динамическое свойство корректно обновляется в Tinker, но не в phpunit.


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

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

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

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

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

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