Data la seguente classe:PHPUnit: Verifica che array ha una chiave con dato valore
<?php
class Example {
private $Other;
public function __construct ($Other)
{
$this->Other = $Other;
}
public function query()
{
$params = array(
'key1' => 'Value 1'
, 'key2' => 'Value 2'
);
$this->Other->post($params);
}
}
E questo TestCase:
<?php
require_once 'Example.php';
require_once 'PHPUnit/Framework.php';
class ExampleTest extends PHPUnit_Framework_TestCase {
public function test_query_key1_value()
{
$Mock = $this->getMock('Other', array('post'));
$Mock->expects($this->once())
->method('post')
->with(YOUR_IDEA_HERE);
$Example = new Example($Mock);
$Example->query();
}
Come faccio a verificare che $params
(che è un array) e viene passato a $Other->post()
contiene una chiave denominata "chiave1" che ha un valore di "Valore 1"?
Non voglio verificare tutto l'array - questo è solo un codice di esempio, nel codice effettivo l'array passato ha molti più valori, voglio verificare solo una singola coppia chiave/valore.
C'è $this->arrayHasKey('keyname')
che posso utilizzare per verificare che la chiave esista.
C'è anche $this->contains('Value 1')
, che può essere utilizzato per verificare che l'array abbia questo valore.
Potrei persino combinare questi due con $this->logicalAnd
. Ma questo ovviamente non dà il risultato desiderato.
Finora ho usato returnCallback, catturando l'intero $ param e poi facendo affermazioni su questo, ma c'è forse un altro modo per fare ciò che voglio?
$ questo-> attributo (Vincolo, valore) è in grado di fare ciò che sono dopo, ma non funziona sugli array. –