4
如何使用mockery和hamcrest来声明当调用模拟对象的方法时,传递给它的参数之一是包含键的数组/值对?Mockery:测试参数是否包含键/值对的数组
例如,我的测试代码可能是这样的:
$mock = m::mock('\Jodes\MyClass');
$mock ->shouldReceive('myMethod')
->once()
->with(
arrayContainsPair('my_key', 'my_value')
);
我知道我可以将其与封写,但我只是想知道是否有使其阅读稍微好一点的另一种方式:
$mock ->shouldReceive('myMethod')
->once()
->with(
m::on(function($options){
return
is_array($options) &&
isset($options['my_key']) &&
$options['my_key'] == 'my_val';
})
);
有什么方法来测试阵列有两个键? –
@DimitryK Hamcrest让我们结合可能工作的条件。例如allOf(hasEntry('my_key1','my_value1'),hasEntry('my_key2','my_entry2'))''。另外,Mockery有'Mockery :: subset()',这也可能是你想要的。例如。 '\ Mockery :: subset(['my_key1'=>'my_value1','my_key2'=>'my_entry2'])'。 – user2045006