2
我正在編寫單元測試來測試Model類。 首先,我有一個testAddStudent()
測試用例,它向db中添加了一些數據。 然後我有另一個測試用例來檢索我剛添加的記錄。 我的代碼如下所示:無法調用相關測試用例
class Model_STest extends PHPUnit_Framework_TestCase {
protected $_student;
public function setUp() {
error_log("Entered setup");
parent::setUp();
$this->_student = new Application_Model_Student();
}
public function testInit() {
error_log("Entered testInit");
}
public function testAddStudent() {
error_log("Entered testAddStudent");
$testData = array(
'name' => 'abc',
'teacher' => 'amyac',
'start_date' => '2012_08_06'
);
$result = $this->_student->addStudent($testData);
error_log("result is ".print_r($result, true));
$this->assertGreaterThan(0, $result);
}
/**
* @depends testAddStudent
*/
public function testGetStudent($result) {
error_log("Entered testGetStudent, finding student id: $result");
$resultx = $this->_student->getStudent($result);
$this->assertEquals($result, $resultx);
}
}
然而,當我運行PHPUnit的測試(使用命令行),該日誌顯示我的學生證被搜索爲0。儘管testAddStudent
將返回我學生ID是一個非零值。
我在做什麼錯? 我有
PHPUnit 3.6.11 by Sebastian Bergmann。
任何幫助,非常感謝。
謝謝!
您已經提供了正確的解決方案,但我不建議重複使用模型夾具。每個單元測試應該像實際一樣獨立。否則,您有第一次測試改變模型的風險,以至於干擾第二次測試。 – 2012-08-07 06:52:39
Darren和@DavidHarkness,謝謝你的回覆。達倫,我只使用返回$結果,並確實將值傳遞給testGetStudent函數。但是,它會拋出一個錯誤,指出Zend_Db_Table_Row Object(...)與期望的類型「string」不匹配。儘管模型函數getStudent($ result)運行良好,並且可以通過Zend_Db_Table_Row Object格式獲取rec_id,但由於此錯誤,斷言失敗。我錯過了別的嗎? – 2012-08-07 18:36:32
而對於getStudent()函數,我並不真正理解以這種方式實現的動機是什麼。到目前爲止,我正在創建模型對象,因此每次運行測試用例時,設置都會有一個乾淨的模型對象。如果你可以詳細說明爲什麼當前的實現錯誤,爲什麼它應該按照你所做的方式來實現,那會很好。再次感謝。 – 2012-08-07 18:38:51