У меня несколько локальных тестов не пройдены на моем локальном компьютере, потому что значения DateTime отличаются:
4) Tests\AppBundle\Form\AssetStatusTypeTest::testValidForm with data set #0 (array('active'))
Failed asserting that two objects are equal.
--- Expected
+++ Actual
@@ @@
'status' => 'active'
'type' => null
'amount' => null
- 'createdAt' => 2018-09-20T20:34:47.047520+0200
+ 'createdAt' => 2018-09-20T20:34:47.047870+0200
'updatedAt' => null
'contract' => null
'admin' => null
Тест:
public function testValidForm($data)
{
$form = $this->factory->create(AssetStatusType::class);
$object = Entity::fromArray(new Asset(), $data);
$form->submit($data);
$this->assertTrue($form->isSynchronized());
$this->assertEquals($object, $form->getData());
$view = $form->createView();
$children = $view->children;
foreach (array_keys($data) as $key) {
$this->assertArrayHasKey($key, $children);
}
}
Что более или менее скопировано издокументы .
Теперь поле createdAt
установлено так:
public function __construct()
{
if (empty($this->createdAt)) {
$this->createdAt = new \DateTime();
}
}
Моя главная мысль: этот тест проходит на нашем Jenkins.Это не локально на нескольких машинах разработчика.Моим первым побуждением было проверить настройки часового пояса ini.
Интересно, как это вообще возможно.Если я правильно понял, ожидается, когда object
был создан, и фактическим, когда форма отправлена.Таким образом, оба объекта никогда не могут иметь одинаковую отметку времени createdAt
.Если precision
, вероятно, не очень низкий.