這裏是下面的代碼示例與()功能PHPUnit的模擬工作怪異
<?php
interface iFS
{
public function read();
public function write($data);
}
class MyClass
{
protected $_fs = null;
public function __construct(iFS $fs)
{
$this->_fs = $fs;
}
public function run(array $list)
{
foreach ($list as $elm)
{
$this->_fs->write($elm);
}
return $this->_fs->read();
}
}
class MyTests extends PHPUnit_Framework_TestCase
{
public function testFS()
{
$mock = $this->getMock('iFS');
$mock->expects($this->at(0))
->method('read')
->will($this->returnValue('tototatatiti'));
$c = new MyClass($mock);
$result = $c->run(array('toto', 'tata', 'titi'));
$this->assertEquals('tototatatiti', $result);
}
}
這絕對不是一個真實的案例,但它使發生一些奇怪的使用PHPUnit和($指數)功能。
我的問題很簡單,是正常的測試失敗?
我明確地要求歸還 「tototatatiti」,但它從來沒有發生......
當
- 我刪除行$本 - > _ FS->寫($榆樹); 或
- 我替換$模擬轉>預計($這 - >在(0))由$模擬轉>預計($這 - >一次())
該測試通到綠色
有什麼我不明白的嗎?
編輯:
$模擬轉>預計($這 - >在(3)) - >方法( '讀') - >將($這 - >的returnValue( 'tototatatiti')) ;
=>將通過測試的綠色......
看來,這 - $>在($指數)功能並不適用於方法指定,但對整個嘲笑的對象......如果這是正確的,這是完全無用的! – nemenems 2013-04-24 15:13:01