0
나는이 시험에 따라 다음 또한phpunit을은 동일
class ReportTable_Renderer_Html_Decorator_AddRecord extends ReportTable_Renderer_Html_Decorator_CallParent
{
public function renderAddItem(ReportTable $table)
{
$newRow = array();
$masterIDColumn = $this->getMasterIDColumn();
if (!empty($masterIDColumn)) {
$newRow[$masterIDColumn] = $this->getOwner()->getMasterID();
}
foreach ($table->getColumns() as $name => $column) {
$newRow[$name] = '';
}
$newRow['id'] = '0';
if (!empty($newRow[$masterIDColumn])) $newRow['id'] .= '_' . $newRow[$masterIDColumn];
$newRow[$this->getColumn()] = $this->getText();
$this->getRowStyle()->getGroupStyles()->add('do_not_print grey');
return $this->getParent()->renderRowContent($table, $newRow);
}
및 그 기능을 내가 테스트
class ReportTable_Renderer_Html_Decorator_Base extends ReportTable_Renderer_Html
{
public function renderRowContent(ReportTable $table, array $row) {}
public function renderRowSetFooter(ReportTable $table) {}
}
에 대한 스텁하기 위해 필요한이 (간접) 부모 클래스,
내 테스트 : 나는 두 조롱 기능 발생이 오류 메시지와 함께 붙어있어
public function testRenderRowSetFooter()
{
$table = new ReportTable('a','b');
$table->addColumn(new ReportTable_Column('one', 'one'));
$table->addColumn(new ReportTable_Column('two', 'two'));
$table->addColumn(new ReportTable_Column('three', 'three'));
$testText = 'test text';
$parentFooterText = 'parent.parent';
$groupID = 234;
$addText = 'Add me. Add me now!';
$newRow = array('one' => $addText, 'two' => $groupID, 'three' => '', 'id' => 0);
$parent = $this->getMock('ReportTable_Renderer_Html_Base', array('renderRowContent', 'renderRowSetFooter'));
$parent->expects($this->any())->method('renderRowContent')->with($table, $newRow)->will($this->returnValue($testText));
$parent->expects($this->any())->method('renderRowSetFooter')->with($table)->will($this->returnValue($parentFooterText));
$subject = $this->getSubject($parent, array('text' => $addText, 'column' => 'one', 'masterIDColumn' => 'two'));
$subject->getOwner()->setMasterID($groupID);
$this->assertEquals($parentFooterText . $testText, $subject->renderRowSetFooter($table));
}
:
PHPUnit_Framework_ExpectationFailedException : Expectation failed for method name is equal to <string:renderRowContent> when invoked zero or more times
Parameter 1 for invocation Herkt_ReportTable_Renderer_Html_Base::renderRowContent(Herkt_ReportTable Object (...), Array (...)) does not match expected value.
Failed asserting that two arrays are equal.
배열 중 하나는 $ newRow이고, 다른 하나는 분명히 함수의 재 투입입니다. 하지만 나는이 배열에 대한 assertEquals를 추가하지 않았다. 어떻게 이런 일이 벌어지며 시험을 어떻게 수정할 수 있습니까?