phpunit, Travis-CI и Symfony2 - проходит локально, но не работает на Travis

0

У меня есть установка Symfony2 (2.6), и у меня есть phpunit для фиксации через Travis CI. В настоящее время у меня только один тест. Он просто проверяет наличие текста на главной странице. Тем не менее, внезапно он начал терпеть неудачу на Тревисе после некоторого времени, и я понятия не имею, почему.

Когда я запускаю phpunit локально и в основном где угодно, но Travis, он проходит.

Результаты Travis: https://travis-ci.org/etherealpost/etherealpost.com Пример неудачи: https://travis-ci.org/etherealpost/etherealpost.com/jobs/46139220

PHPUnit 4.4.0 by Sebastian Bergmann.
Configuration read from /home/travis/build/etherealpost/etherealpost.com/phpunit.xml.dist
Starting test 'EtherealPost\WebsiteBundle\Tests\Controller\DefaultControllerTest::testIndex'.
F
Time: 3.7 seconds, Memory: 78.00Mb
There was 1 failure:
1) EtherealPost\WebsiteBundle\Tests\Controller\DefaultControllerTest::testIndex
Failed asserting that false is true.
/home/travis/build/etherealpost/etherealpost.com/src/EtherealPost/WebsiteBundle/Tests/Controller/DefaultControllerTest.php:15

FAILURES!                            
Tests: 1, Assertions: 1, Failures: 1.
The command "phpunit -v --debug" exited with 1.
Done. Your build exited with 1.

Файл.travis.yml:

language: php

php:
  - hhvm
  - 5.5
  - 5.6

services:
  - mongodb

matrix:
    allow_failures:
        - php: hhvm
        - php: 5.6

before_script:
  - phpenv config-add mongo.ini
  - composer install -n --no-interaction
  - cp app/config/parameters.yml.dist app/config/parameters.yml
  - php bin/console assets:install web --symlink
  - php bin/console assetic:dump

script: phpunit -v --debug

И сам тест:

public function testIndex()
{
    $client = static::createClient();

    $crawler = $client->request('GET', '/');

    $this->assertTrue($crawler->filter('html:contains("Ethereal Post")')->count() > 0);
}

Любые предложения очень ценятся.

EDIT: Ветвление и выполнение var_dump на $ crawlwer дает следующий результат:

https://travis-ci.org/etherealpost/etherealpost.com/jobs/46141870

Starting test 'EtherealPost\WebsiteBundle\Tests\Controller\DefaultControllerTest::testIndex'.
Fclass Symfony\Component\DomCrawler\Crawler#1451 (4) {
  protected $uri =>
  string(17) "http://localhost/"
  private $defaultNamespacePrefix =>
  string(7) "default"
  private $namespaces =>
  array(0) {
  }
  private $storage =>
  array(1) {
    '0000000031ea54cc000000004ace6b3f' =>
    array(2) {
      'obj' =>
      class DOMElement#1197 (17) {
        ...
      }
      'inf' =>
      NULL
    }
  }
}
Time: 2.98 seconds, Memory: 77.75Mb
There was 1 failure:
1) EtherealPost\WebsiteBundle\Tests\Controller\DefaultControllerTest::testIndex
Failed asserting that false is true.
  • 0
    Что если вы проверите фактическое содержимое просканированной страницы?
  • 0
    @zerkms Я разветвился и сделал var_dump на $ crawler, который дает следующий результат: travis-ci.org/etherealpost/etherealpost.com/jobs/46141870 Я не уверен, что Трэвис вообще усекает это.
Показать ещё 5 комментариев
Теги:
travis-ci
phpunit

1 ответ

-1
Лучший ответ

В конечном итоге нашла проблему. Чтобы решить эту проблему, особенно для Symfony2/Travis, мне пришлось выполнить var_dump($client->getResponse()->getContent()); в тесте, и пусть Тревис повторит, чтобы точно определить, что тестировал.

Похоже, что Symfony2 работал в режиме Dev по умолчанию (ожидалось) и показывал несколько предупреждений, которые были подавлены в режиме производства, который выполнялся локально.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню