2017-12-27 10 views
2

Ich habe die Testklasse:PHPUnit und Jenkins: für Datum und Uhrzeit zu erwarten und für Datum und Uhrzeit tatsächlichen

class ClassTest extends \PHPUnit_Framework_TestCase 
{ 
    /** 
    * @covers \Path\Class::method() 
    * @dataProvider methodData 
    */ 
    public function testMethod($data, $expected) 
    { 
     $this->object = $this->getMockBuilder("Path\Class") 
      ->setConstructorArgs([..]) 
      ->getMock(); 
     .... 
     $response = $this->object->method($data); 
     $this->assertEquals($expected, $response); 
    } 
    public function methodData() 
    { 
     $entity= new Entity(); 
     $entity->setDateArrivee(new \DateTime()); 
     .... 
     .... 
    } 
} 

ich die PHPUnit in Jenkins Job auszuführen. Die Datetime von dateArrivee in der Antwort und die erwartete ist nicht das Gleiche. Ich weiß nicht warum. Können Sie mir helfen?

+2

Es wird weitgehend davon abhängen, wie Sie Daten aus den 'methodData()' Daten-Provider zurückbringen, als auch, was bei dem Verfahren geschehen() zu sein namens. ClockMocking oder das Speichern des Initialisierungsdatums für die Verwendung in der Funktion und als die erwartete Rückkehr wird ebenfalls helfen. –

+0

Erstellen Sie in Ihrem Datenprovider/Test mehrmals die DateTime-Instanz? Wenn dies der Fall ist, kann es kleine Unterschiede zwischen ihnen ((Mikro) Sekunden) geben. Stellen Sie sicher, dass das Datum mit demselben Zeitstempel generiert wird, z. B. durch hartes Codieren (aktuell verwenden Sie den aktuellen Zeitstempel). –

Antwort

0

Ich schreibe diese Methode in den testmethod

$entity->setDateArrivee(new \DateTime());