waitOutputString или waitOutputRegex в PHPUnit - PullRequest
4 голосов
/ 20 декабря 2011

Привет! Я использую PHPUnit для моего модульного тестирования.

У меня проблема с тестированием выходных данных с использованием метода waitOutputString / waitOutputRegex

Проблема:

function test_myTest() {
    $this->expectOutputString('testxzxzxzxzxz');
    $this->expectOutputString('test');
    echo 'test';
}

Этот тестовый проход, когда я генерирую отчет модульного теста, даже если первое ожидание не удается

В отличие от методов assert, тест не пройден, если есть одно утверждение, которое не проходит

Пример assertTrue:

// this test fail because the first assertTrue fails
function test_myAssert() {
  $this->assertTrue(false);
  $this->assertTrue(true);
}

Похоже, что это не хватает функциональности в PHPUnit ..

У кого-нибудь есть идеи или альтернативный способ достижения того, чего я хочу, при тестировании вывода?

1 Ответ

7 голосов
/ 20 декабря 2011

expectOutputString сохраняет данную строку для сравнения с результатами всего теста, но она перезаписывает любую ранее сохраненную строку. Другими словами, только последний вызов expectOutputString имеет какой-либо эффект. Вы должны создать полную строку вывода и вызвать expectOutputString только один раз.

function test_myTest() {
    $this->expectOutputString('testxzxzxzxzxz' . 'test');
    echo 'test';
}

Выше не получится, потому что testxzxzxzxzxztest не равно выводу test.

...