次のクラスがあるとします。
<?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);
}
}
そしてこのテストケース:
<?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();
}
$params
(配列である)が渡され$Other->post()
、値が「値1」の「key1」という名前のキーが含まれていることを確認するにはどうすればよいですか?
すべての配列を検証したくありません。これは単なるサンプルコードです。実際のコードでは、渡された配列にはさらに多くの値があり、そこにある1つのキーと値のペアだけを検証したいと思います。
$this->arrayHasKey('keyname')
キーが存在することを確認するために使用できることがあります。
$this->contains('Value 1')
配列にこの値があることを確認するために使用できる、もあります。
これら2つを。と組み合わせることもでき$this->logicalAnd
ます。しかし、これはもちろん望ましい結果をもたらしません。
これまで、returnCallbackを使用して、$ params全体をキャプチャし、それに対してアサートを実行してきましたが、おそらく別の方法でやりたいことを実行できますか?