Benim fonksiyonu, (hazırlamak), bir tanıma sahip
/**
* @covers /data/DB_Service::prepare
* @uses /inc/config
*/
public function testNoExceptionIsRaisedForValidPrepareWithConditionsAndConditionsRequiredArguments() {
$method = new ReflectionMethod('DB_Service', 'prepare');
$method->setAccessible(TRUE);
$dbs = new DB_Service(new Config(), array('admin', 'etl'));
$data = array('message' => '', 'sql' => array('full_query' => ""));
$method->invoke($dbs, $data, array('conditionKey' => 'conditionValue'), TRUE);
}
yükseltir (ve benim testi kırar)
başarısız ve test başarılıdır.ReflectionException: yöntem DB_Service çağırma :: prepare() bu
/** * @covers /data/DB_Service::prepare * @uses /inc/config */ public function testNoExceptionIsRaisedForValidPrepareWithConditionsAndConditionsRequiredArguments() { $method = new ReflectionMethod('DB_Service', 'prepare'); $method->setAccessible(TRUE); $dbs = new DB_Service(new Config(), array('admin', 'etl')); //$data is no longer declared - the array is directly in the call below $method->invoke($dbs, array('message' => '', 'sql' => array('full_query' => "")), array('conditionKey' => 'conditionValue'), TRUE); }
eserler mükemmel Ancak
Neden değişken bildiriliyor ve sonra çalışmıyor, ancak yöntem çağrısı içinde oluşturuluyor neden çalışıyor? Bunun, invoke() 'nin nasıl çalıştığıyla ilgili bir şey olduğunu düşünüyorum, ama ne olduğunu anlayamıyorum. invoke belgelerine itibaren
[Bu SO gönderisi] başına (http://stackoverflow.com/questions/8971261/php-5-4-call-time-pass-by-reis-easy-fix-available), bu kullanımdan kaldırılmıştır. PHP5 ve kullanımı önerilmez. Metod tanımında argümanı referans ile geçiyorum, bu yüzden tekrar arama yapmak doğru olmamalıdır. –
@MatthewHerbst Kesinlikle haklısın, benim hatam. – wavemode
Ah, bu invokeArgs harika. Teşekkür ederim! –