У меня есть такие функции:
// $value could be an array or SomeClass type
public function foo($key, $value)
{
// some code
if ($value instanceof SomeClass) {
$value = $this->bar($value);
}
// some code
}
protected function bar(SomeClass $value)
{
// do stuff
}
Теперь в моем тесте у меня есть что-то вроде этого:
{
$suppliedValue = [];
$mock = ... // create mock
$mock->shouldReceive('foo')->withArgs(
// first arg should be an int or string
// second arg should be an array or SomeClass object
);
if (typeOf($suppliedValue) === 'array') {
$mock->shouldNotReceive('bar');
} else {
$mock->shouldReceive('bar');
}
$mock->aFunctionThatCallsFoo($suppliedValue);
}
Однако, похоже, это не работает, независимо от того, какое значениепри foo()
он не вызывает shouldReceive()
/ shouldNotReceive()
на bar()
.
Что мне здесь не хватает?Мне кажется, что я неправильно понимаю что-то фундаментальное в насмешках.